MCPcopy Create free account
hub / github.com/gogs/gogs / runBackup

Function runBackup

internal/cmd/backup.go:47–164  ·  view source on GitHub ↗
(c *cli.Context)

Source from the content-addressed store, hash-verified

45)
46
47func runBackup(c *cli.Context) error {
48 zip.Verbose = c.Bool("verbose")
49
50 err := conf.Init(c.String("config"))
51 if err != nil {
52 return errors.Wrap(err, "init configuration")
53 }
54 conf.InitLogging(true)
55
56 conn, err := database.SetEngine()
57 if err != nil {
58 return errors.Wrap(err, "set engine")
59 }
60
61 tmpDir := c.String("tempdir")
62 if !osutil.Exist(tmpDir) {
63 log.Fatal("'--tempdir' does not exist: %s", tmpDir)
64 }
65 rootDir, err := os.MkdirTemp(tmpDir, "gogs-backup-")
66 if err != nil {
67 log.Fatal("Failed to create backup root directory '%s': %v", rootDir, err)
68 }
69 log.Info("Backup root directory: %s", rootDir)
70
71 // Metadata
72 metaFile := path.Join(rootDir, "metadata.ini")
73 metadata := ini.Empty()
74 metadata.Section("").Key("VERSION").SetValue(strconv.Itoa(currentBackupFormatVersion))
75 metadata.Section("").Key("DATE_TIME").SetValue(time.Now().String())
76 metadata.Section("").Key("GOGS_VERSION").SetValue(conf.App.Version)
77 if err = metadata.SaveTo(metaFile); err != nil {
78 log.Fatal("Failed to save metadata '%s': %v", metaFile, err)
79 }
80
81 archiveName := filepath.Join(c.String("target"), c.String("archive-name"))
82 log.Info("Packing backup files to: %s", archiveName)
83
84 z, err := zip.Create(archiveName)
85 if err != nil {
86 log.Fatal("Failed to create backup archive '%s': %v", archiveName, err)
87 }
88 if err = z.AddFile(archiveRootDir+"/metadata.ini", metaFile); err != nil {
89 log.Fatal("Failed to include 'metadata.ini': %v", err)
90 }
91
92 // Database
93 dbDir := filepath.Join(rootDir, "db")
94 if err = database.DumpDatabase(context.Background(), conn, dbDir, c.Bool("verbose")); err != nil {
95 log.Fatal("Failed to dump database: %v", err)
96 }
97 if err = z.AddDir(archiveRootDir+"/db", dbDir); err != nil {
98 log.Fatal("Failed to include 'db': %v", err)
99 }
100
101 if !c.Bool("database-only") {
102 // Custom files
103 err = addCustomDirToBackup(z)
104 if err != nil {

Callers

nothing calls this directly

Calls 12

InitFunction · 0.92
InitLoggingFunction · 0.92
SetEngineFunction · 0.92
ExistFunction · 0.92
DumpDatabaseFunction · 0.92
IsDirFunction · 0.92
GetNonMirrorRepositoriesFunction · 0.92
addCustomDirToBackupFunction · 0.85
StopMethod · 0.80
FullNameMethod · 0.65
StringMethod · 0.45
CreateMethod · 0.45

Tested by

no test coverage detected