mirror of
https://github.com/alireza0/s-ui.git
synced 2026-08-31 16:31:07 +00:00
cli backup #1106
This commit is contained in:
parent
e0b6fae0b0
commit
af3b994f00
2 changed files with 52 additions and 0 deletions
36
cmd/backup.go
Normal file
36
cmd/backup.go
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/alireza0/s-ui/config"
|
||||
"github.com/alireza0/s-ui/database"
|
||||
)
|
||||
|
||||
func backupDb(output string, exclude string) {
|
||||
if output == "" {
|
||||
fmt.Println("backup failed: -output is required (use - for stdout)")
|
||||
return
|
||||
}
|
||||
if err := database.InitDB(config.GetDBPath()); err != nil {
|
||||
fmt.Println("backup failed:", err)
|
||||
return
|
||||
}
|
||||
data, err := database.GetDb(exclude)
|
||||
if err != nil {
|
||||
fmt.Println("backup failed:", err)
|
||||
return
|
||||
}
|
||||
if output == "-" {
|
||||
if _, err := os.Stdout.Write(data); err != nil {
|
||||
fmt.Fprintln(os.Stderr, "backup failed:", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
if err := os.WriteFile(output, data, 0600); err != nil {
|
||||
fmt.Println("backup failed:", err)
|
||||
return
|
||||
}
|
||||
fmt.Println("backup saved to", output)
|
||||
}
|
||||
16
cmd/cmd.go
16
cmd/cmd.go
|
|
@ -16,6 +16,7 @@ func ParseCmd() {
|
|||
|
||||
adminCmd := flag.NewFlagSet("admin", flag.ExitOnError)
|
||||
settingCmd := flag.NewFlagSet("setting", flag.ExitOnError)
|
||||
backupCmd := flag.NewFlagSet("backup", flag.ExitOnError)
|
||||
|
||||
var username string
|
||||
var password string
|
||||
|
|
@ -25,6 +26,10 @@ func ParseCmd() {
|
|||
var subPath string
|
||||
var reset bool
|
||||
var show bool
|
||||
var output string
|
||||
var exclude string
|
||||
backupCmd.StringVar(&output, "output", "", "backup output file path (use - for stdout)")
|
||||
backupCmd.StringVar(&exclude, "exclude", "", "comma-separated tables to exclude: changes,stats")
|
||||
settingCmd.BoolVar(&reset, "reset", false, "reset all settings")
|
||||
settingCmd.BoolVar(&show, "show", false, "show current settings")
|
||||
settingCmd.IntVar(&port, "port", 0, "set panel port")
|
||||
|
|
@ -46,10 +51,13 @@ func ParseCmd() {
|
|||
fmt.Println(" uri Show panel URI")
|
||||
fmt.Println(" migrate migrate form older version")
|
||||
fmt.Println(" setting set/reset/show settings")
|
||||
fmt.Println(" backup create a database backup")
|
||||
fmt.Println()
|
||||
adminCmd.Usage()
|
||||
fmt.Println()
|
||||
settingCmd.Usage()
|
||||
fmt.Println()
|
||||
backupCmd.Usage()
|
||||
}
|
||||
|
||||
flag.Parse()
|
||||
|
|
@ -105,6 +113,14 @@ func ParseCmd() {
|
|||
updateSetting(port, path, subPort, subPath)
|
||||
showSetting()
|
||||
}
|
||||
|
||||
case "backup":
|
||||
err := backupCmd.Parse(os.Args[2:])
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
backupDb(output, exclude)
|
||||
default:
|
||||
fmt.Println("Invalid subcommands")
|
||||
flag.Usage()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue