From 4e9d2c4cca7b4ebd394323fa154918da9bf2e939 Mon Sep 17 00:00:00 2001 From: Gilbert Chen Date: Mon, 18 Sep 2023 14:44:41 -0400 Subject: [PATCH] Allow two copy-compatible storages to have different compression levels This is useful for upgrading an existing storage to zstd compression or others. Chunks need to be decompressed and re-compressed during copy anyway. Only the bit-identical option requires the same compression level Also fix a typo: compatiable -> compatible --- src/duplicacy_backupmanager.go | 2 +- src/duplicacy_config.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/duplicacy_backupmanager.go b/src/duplicacy_backupmanager.go index 2413494..69fc59d 100644 --- a/src/duplicacy_backupmanager.go +++ b/src/duplicacy_backupmanager.go @@ -1558,7 +1558,7 @@ func (manager *BackupManager) RestoreFile(chunkDownloader *ChunkDownloader, chun func (manager *BackupManager) CopySnapshots(otherManager *BackupManager, snapshotID string, revisionsToBeCopied []int, uploadingThreads int, downloadingThreads int) bool { - if !manager.config.IsCompatiableWith(otherManager.config) { + if !manager.config.IsCompatibleWith(otherManager.config) { LOG_ERROR("CONFIG_INCOMPATIBLE", "Two storages are not compatible for the copy operation") return false } diff --git a/src/duplicacy_config.go b/src/duplicacy_config.go index e75ee40..24b4386 100644 --- a/src/duplicacy_config.go +++ b/src/duplicacy_config.go @@ -169,10 +169,9 @@ func (config *Config) UnmarshalJSON(description []byte) (err error) { return nil } -func (config *Config) IsCompatiableWith(otherConfig *Config) bool { +func (config *Config) IsCompatibleWith(otherConfig *Config) bool { - return config.CompressionLevel == otherConfig.CompressionLevel && - config.AverageChunkSize == otherConfig.AverageChunkSize && + return config.AverageChunkSize == otherConfig.AverageChunkSize && config.MaximumChunkSize == otherConfig.MaximumChunkSize && config.MinimumChunkSize == otherConfig.MinimumChunkSize && bytes.Equal(config.ChunkSeed, otherConfig.ChunkSeed) && @@ -255,7 +254,6 @@ func CreateConfigFromParameters(compressionLevel int, averageChunkSize int, maxi } if copyFrom != nil { - config.CompressionLevel = copyFrom.CompressionLevel config.AverageChunkSize = copyFrom.AverageChunkSize config.MaximumChunkSize = copyFrom.MaximumChunkSize @@ -265,6 +263,8 @@ func CreateConfigFromParameters(compressionLevel int, averageChunkSize int, maxi config.HashKey = copyFrom.HashKey if bitCopy { + config.CompressionLevel = copyFrom.CompressionLevel + config.IDKey = copyFrom.IDKey config.ChunkKey = copyFrom.ChunkKey config.FileKey = copyFrom.FileKey