9
"github.com/spf13/cobra"
10
"github.com/wal-g/tracelog"
11
"github.com/wal-g/wal-g/internal"
12
conf "github.com/wal-g/wal-g/internal/config"
13
"github.com/wal-g/wal-g/internal/databases/redis"
14
"github.com/wal-g/wal-g/internal/databases/redis/archive"
15
"github.com/wal-g/wal-g/utility"
23
backupPushShortDescription = "Makes backup and uploads it to storage"
24
PermanentFlag = "permanent"
25
PermanentShorthand = "p"
28
// backupPushCmd represents the backupPush command
29
var backupPushCmd = &cobra.Command{
31
Short: backupPushShortDescription,
33
Run: func(cmd *cobra.Command, args []string) {
34
internal.ConfigureLimiters()
36
ctx, cancel := context.WithCancel(context.Background())
37
signalHandler := utility.NewSignalHandler(ctx, cancel, []os.Signal{syscall.SIGINT, syscall.SIGTERM})
38
defer func() { _ = signalHandler.Close() }()
40
uploader, err := internal.ConfigureUploader()
41
tracelog.ErrorLogger.FatalOnError(err)
44
uploader.ChangeDirectory(utility.BaseBackupPath)
46
backupCmd, err := internal.GetCommandSettingContext(ctx, conf.NameStreamCreateCmd)
47
tracelog.ErrorLogger.FatalOnError(err)
49
redisPassword, ok := conf.GetSetting(conf.RedisPassword)
50
if ok && redisPassword != "" { // special hack for redis-cli
51
backupCmd.Env = append(backupCmd.Env, fmt.Sprintf("REDISCLI_AUTH=%s", redisPassword))
53
backupCmd.Stderr = os.Stderr
54
metaConstructor := archive.NewBackupRedisMetaConstructor(ctx, uploader.Folder(), permanent)
56
err = redis.HandleBackupPush(uploader, backupCmd, metaConstructor)
57
tracelog.ErrorLogger.FatalfOnError("Redis backup creation failed: %v", err)
59
PreRun: func(cmd *cobra.Command, args []string) {
60
conf.RequiredSettings[conf.NameStreamCreateCmd] = true
61
err := internal.AssertRequiredSettingsSet()
62
tracelog.ErrorLogger.FatalOnError(err)
67
backupPushCmd.Flags().BoolVarP(&permanent, PermanentFlag, PermanentShorthand, false, "Pushes backup with 'permanent' flag")
68
cmd.AddCommand(backupPushCmd)