wal-g

Форк
0
/
backup_push.go 
69 строк · 2.1 Кб
1
package redis
2

3
import (
4
	"context"
5
	"fmt"
6
	"os"
7
	"syscall"
8

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"
16
)
17

18
var (
19
	permanent = false
20
)
21

22
const (
23
	backupPushShortDescription = "Makes backup and uploads it to storage"
24
	PermanentFlag              = "permanent"
25
	PermanentShorthand         = "p"
26
)
27

28
// backupPushCmd represents the backupPush command
29
var backupPushCmd = &cobra.Command{
30
	Use:   "backup-push",
31
	Short: backupPushShortDescription,
32
	Args:  cobra.NoArgs,
33
	Run: func(cmd *cobra.Command, args []string) {
34
		internal.ConfigureLimiters()
35

36
		ctx, cancel := context.WithCancel(context.Background())
37
		signalHandler := utility.NewSignalHandler(ctx, cancel, []os.Signal{syscall.SIGINT, syscall.SIGTERM})
38
		defer func() { _ = signalHandler.Close() }()
39

40
		uploader, err := internal.ConfigureUploader()
41
		tracelog.ErrorLogger.FatalOnError(err)
42

43
		// Configure folder
44
		uploader.ChangeDirectory(utility.BaseBackupPath)
45

46
		backupCmd, err := internal.GetCommandSettingContext(ctx, conf.NameStreamCreateCmd)
47
		tracelog.ErrorLogger.FatalOnError(err)
48

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))
52
		}
53
		backupCmd.Stderr = os.Stderr
54
		metaConstructor := archive.NewBackupRedisMetaConstructor(ctx, uploader.Folder(), permanent)
55

56
		err = redis.HandleBackupPush(uploader, backupCmd, metaConstructor)
57
		tracelog.ErrorLogger.FatalfOnError("Redis backup creation failed: %v", err)
58
	},
59
	PreRun: func(cmd *cobra.Command, args []string) {
60
		conf.RequiredSettings[conf.NameStreamCreateCmd] = true
61
		err := internal.AssertRequiredSettingsSet()
62
		tracelog.ErrorLogger.FatalOnError(err)
63
	},
64
}
65

66
func init() {
67
	backupPushCmd.Flags().BoolVarP(&permanent, PermanentFlag, PermanentShorthand, false, "Pushes backup with 'permanent' flag")
68
	cmd.AddCommand(backupPushCmd)
69
}
70

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.