mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
* Prevent file corruption when writing tar backup to stdout FB-1794 Tar backups written to stdout were coming out corrupt. This turned out to be due to log messages getting written to stdout and ending up in the tar file. We now check to see if the tar file and the log are both going to stdout, and if they are, send the logs to stderr instead. Testing did not have any kind of consistency or validity check. We now compare a tar file sent to a file and a tar file sent to stdout to make sure they're the same. This does not guarantee correctness but does at least catch this form of corruption. * trying different index name Co-authored-by: tgruben <tgruben@gmail.com> Co-authored-by: Todd Gruben <todd@molecula.com>
33 lines
1.4 KiB
Go
33 lines
1.4 KiB
Go
// Copyright 2022 Molecula Corp. All rights reserved.
|
|
package cmd
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/molecula/featurebase/v3/ctl"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func newBackupTarCommand(logdest io.Writer) *cobra.Command {
|
|
cmd := ctl.NewBackupTarCommand(logdest)
|
|
ccmd := &cobra.Command{
|
|
Use: "backuptar",
|
|
Short: "Back up FeatureBase server in tar format",
|
|
Long: `
|
|
Backs up a FeatureBase server to a local, tar-formatted snapshot file.
|
|
`,
|
|
RunE: usageErrorWrapper(cmd),
|
|
}
|
|
|
|
flags := ccmd.Flags()
|
|
flags.StringVarP(&cmd.OutputPath, "output", "o", "", "Output directory to write to.")
|
|
flags.StringVar(&cmd.Host, "host", "localhost:10101", "The address (host:port) of FeatureBase (HTTP).")
|
|
flags.StringVar(&cmd.Index, "index", "", "Index to backup, default backs up all indexes. ")
|
|
flags.DurationVar(&cmd.RetryPeriod, "retry-period", cmd.RetryPeriod, "Length of time after HTTP request failure to continue retrying request.")
|
|
flags.StringVar(&cmd.Pprof, "pprof", cmd.Pprof, "host:port to listen for profiling requests at /debug/pprof and /debug/fgprof.")
|
|
ctl.SetTLSConfig(flags, "", &cmd.TLS.CertificatePath, &cmd.TLS.CertificateKeyPath, &cmd.TLS.CACertPath, &cmd.TLS.SkipVerify, &cmd.TLS.EnableClientVerification)
|
|
flags.StringVar(&cmd.AuthToken, "auth-token", "", "Authentication token")
|
|
flags.StringVar(&cmd.HeaderTimeoutStr, "header-timeout", cmd.HeaderTimeoutStr, "Length of time to wait for initial HTTP response before giving up.")
|
|
|
|
return ccmd
|
|
}
|