diff --git a/src/cli/backup/exchange.go b/src/cli/backup/exchange.go index 0f11bd6bd..d69ee3adf 100644 --- a/src/cli/backup/exchange.go +++ b/src/cli/backup/exchange.go @@ -91,6 +91,7 @@ func addExchangeCommands(cmd *cobra.Command) *cobra.Command { flags.AddFetchParallelismFlag(c) flags.AddFailFastFlag(c) flags.AddDisableIncrementalsFlag(c) + flags.AddForceItemDataDownloadFlag(c) flags.AddDisableDeltaFlag(c) flags.AddEnableImmutableIDFlag(c) flags.AddDisableConcurrencyLimiterFlag(c) diff --git a/src/cli/backup/onedrive.go b/src/cli/backup/onedrive.go index b9d94fc41..4e241323d 100644 --- a/src/cli/backup/onedrive.go +++ b/src/cli/backup/onedrive.go @@ -78,6 +78,7 @@ func addOneDriveCommands(cmd *cobra.Command) *cobra.Command { flags.AddFailFastFlag(c) flags.AddDisableIncrementalsFlag(c) + flags.AddForceItemDataDownloadFlag(c) case listCommand: c, fs = utils.AddCommand(cmd, oneDriveListCmd()) diff --git a/src/cli/backup/sharepoint.go b/src/cli/backup/sharepoint.go index 7fcf58163..567c0878c 100644 --- a/src/cli/backup/sharepoint.go +++ b/src/cli/backup/sharepoint.go @@ -93,6 +93,7 @@ func addSharePointCommands(cmd *cobra.Command) *cobra.Command { flags.AddDataFlag(c, []string{dataLibraries}, true) flags.AddFailFastFlag(c) flags.AddDisableIncrementalsFlag(c) + flags.AddForceItemDataDownloadFlag(c) case listCommand: c, fs = utils.AddCommand(cmd, sharePointListCmd()) diff --git a/src/cli/flags/options.go b/src/cli/flags/options.go index 81a893f93..b24c5a9c9 100644 --- a/src/cli/flags/options.go +++ b/src/cli/flags/options.go @@ -9,6 +9,7 @@ const ( DisableConcurrencyLimiterFN = "disable-concurrency-limiter" DisableDeltaFN = "disable-delta" DisableIncrementalsFN = "disable-incrementals" + ForceItemDataDownloadFN = "force-item-data-download" EnableImmutableIDFN = "enable-immutable-id" FailFastFN = "fail-fast" FailedItemsFN = "failed-items" @@ -26,6 +27,7 @@ var ( DisableConcurrencyLimiterFV bool DisableDeltaFV bool DisableIncrementalsFV bool + ForceItemDataDownloadFV bool EnableImmutableIDFV bool FailFastFV bool FetchParallelismFV int @@ -110,6 +112,19 @@ func AddDisableIncrementalsFlag(cmd *cobra.Command) { cobra.CheckErr(fs.MarkHidden(DisableIncrementalsFN)) } +// Adds the hidden '--force-item-data-download' cli flag which, when set, +// disables kopia-assisted incremental backups. +func AddForceItemDataDownloadFlag(cmd *cobra.Command) { + fs := cmd.Flags() + fs.BoolVar( + &ForceItemDataDownloadFV, + ForceItemDataDownloadFN, + false, + "Disable cached data checks in backups to force item redownloads for "+ + "items changed since the last successful backup.") + cobra.CheckErr(fs.MarkHidden(ForceItemDataDownloadFN)) +} + // Adds the hidden '--disable-delta' cli flag which, when set, disables // delta based backups. func AddDisableDeltaFlag(cmd *cobra.Command) { diff --git a/src/cli/utils/options.go b/src/cli/utils/options.go index 932c56b6b..fdb92aced 100644 --- a/src/cli/utils/options.go +++ b/src/cli/utils/options.go @@ -23,6 +23,7 @@ func Control() control.Options { opt.DisableMetrics = flags.NoStatsFV opt.SkipReduce = flags.SkipReduceFV opt.ToggleFeatures.DisableIncrementals = flags.DisableIncrementalsFV + opt.ToggleFeatures.ForceItemDataDownload = flags.ForceItemDataDownloadFV opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV opt.ToggleFeatures.DisableConcurrencyLimiter = flags.DisableConcurrencyLimiterFV diff --git a/src/cli/utils/options_test.go b/src/cli/utils/options_test.go index 1a8f7ddcd..6cb12e9d1 100644 --- a/src/cli/utils/options_test.go +++ b/src/cli/utils/options_test.go @@ -29,6 +29,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() { Run: func(cmd *cobra.Command, args []string) { assert.True(t, flags.FailFastFV, flags.FailFastFN) assert.True(t, flags.DisableIncrementalsFV, flags.DisableIncrementalsFN) + assert.True(t, flags.ForceItemDataDownloadFV, flags.ForceItemDataDownloadFN) assert.True(t, flags.DisableDeltaFV, flags.DisableDeltaFN) assert.True(t, flags.NoStatsFV, flags.NoStatsFN) assert.True(t, flags.RestorePermissionsFV, flags.RestorePermissionsFN) @@ -44,6 +45,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() { flags.AddFailFastFlag(cmd) flags.AddDisableIncrementalsFlag(cmd) + flags.AddForceItemDataDownloadFlag(cmd) flags.AddDisableDeltaFlag(cmd) flags.AddRestorePermissionsFlag(cmd) flags.AddSkipReduceFlag(cmd) @@ -56,6 +58,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() { "test", "--" + flags.FailFastFN, "--" + flags.DisableIncrementalsFN, + "--" + flags.ForceItemDataDownloadFN, "--" + flags.DisableDeltaFN, "--" + flags.NoStatsFN, "--" + flags.RestorePermissionsFN,