74 lines
1.9 KiB
Go
74 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/influxdata/influx-cli/v2/clients/backup"
|
|
br "github.com/influxdata/influx-cli/v2/internal/backup_restore"
|
|
"github.com/influxdata/influx-cli/v2/pkg/cli/middleware"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
func newBackupCmd() *cli.Command {
|
|
var params backup.Params
|
|
// Default to gzipping local files.
|
|
params.Compression = br.GzipCompression
|
|
|
|
return &cli.Command{
|
|
Name: "backup",
|
|
Usage: "Backup database",
|
|
Description: `Backs up InfluxDB to a directory
|
|
|
|
Examples:
|
|
# backup all data
|
|
influx backup /path/to/backup
|
|
`,
|
|
ArgsUsage: "path",
|
|
Before: middleware.WithBeforeFns(withCli(), withApi(true)),
|
|
Flags: append(
|
|
commonFlagsNoPrint(),
|
|
&cli.StringFlag{
|
|
Name: "org-id",
|
|
Usage: "The ID of the organization",
|
|
EnvVars: []string{"INFLUX_ORG_ID"},
|
|
Destination: ¶ms.OrgID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org",
|
|
Usage: "The name of the organization",
|
|
Aliases: []string{"o"},
|
|
EnvVars: []string{"INFLUX_ORG"},
|
|
Destination: ¶ms.Org,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "bucket-id",
|
|
Usage: "The ID of the bucket to backup",
|
|
Destination: ¶ms.BucketID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "bucket",
|
|
Usage: "The name of the bucket to backup",
|
|
Aliases: []string{"b"},
|
|
Destination: ¶ms.Bucket,
|
|
},
|
|
&cli.GenericFlag{
|
|
Name: "compression",
|
|
Usage: "Compression to use for local backup files, either 'none' or 'gzip'",
|
|
Value: ¶ms.Compression,
|
|
},
|
|
),
|
|
Action: func(ctx *cli.Context) error {
|
|
if ctx.NArg() != 1 {
|
|
return errors.New("backup path must be specified as a single positional argument")
|
|
}
|
|
params.Path = ctx.Args().Get(0)
|
|
|
|
client := backup.Client{
|
|
CLI: getCLI(ctx),
|
|
BackupApi: getAPI(ctx).BackupApi,
|
|
}
|
|
return client.Backup(ctx.Context, ¶ms)
|
|
},
|
|
}
|
|
}
|