mirror of
https://github.com/gilbertchen/duplicacy
synced 2025-12-06 00:03:38 +00:00
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
This commit is contained in:
@@ -1558,7 +1558,7 @@ func (manager *BackupManager) RestoreFile(chunkDownloader *ChunkDownloader, chun
|
|||||||
func (manager *BackupManager) CopySnapshots(otherManager *BackupManager, snapshotID string,
|
func (manager *BackupManager) CopySnapshots(otherManager *BackupManager, snapshotID string,
|
||||||
revisionsToBeCopied []int, uploadingThreads int, downloadingThreads int) bool {
|
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")
|
LOG_ERROR("CONFIG_INCOMPATIBLE", "Two storages are not compatible for the copy operation")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,10 +169,9 @@ func (config *Config) UnmarshalJSON(description []byte) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *Config) IsCompatiableWith(otherConfig *Config) bool {
|
func (config *Config) IsCompatibleWith(otherConfig *Config) bool {
|
||||||
|
|
||||||
return config.CompressionLevel == otherConfig.CompressionLevel &&
|
return config.AverageChunkSize == otherConfig.AverageChunkSize &&
|
||||||
config.AverageChunkSize == otherConfig.AverageChunkSize &&
|
|
||||||
config.MaximumChunkSize == otherConfig.MaximumChunkSize &&
|
config.MaximumChunkSize == otherConfig.MaximumChunkSize &&
|
||||||
config.MinimumChunkSize == otherConfig.MinimumChunkSize &&
|
config.MinimumChunkSize == otherConfig.MinimumChunkSize &&
|
||||||
bytes.Equal(config.ChunkSeed, otherConfig.ChunkSeed) &&
|
bytes.Equal(config.ChunkSeed, otherConfig.ChunkSeed) &&
|
||||||
@@ -255,7 +254,6 @@ func CreateConfigFromParameters(compressionLevel int, averageChunkSize int, maxi
|
|||||||
}
|
}
|
||||||
|
|
||||||
if copyFrom != nil {
|
if copyFrom != nil {
|
||||||
config.CompressionLevel = copyFrom.CompressionLevel
|
|
||||||
|
|
||||||
config.AverageChunkSize = copyFrom.AverageChunkSize
|
config.AverageChunkSize = copyFrom.AverageChunkSize
|
||||||
config.MaximumChunkSize = copyFrom.MaximumChunkSize
|
config.MaximumChunkSize = copyFrom.MaximumChunkSize
|
||||||
@@ -265,6 +263,8 @@ func CreateConfigFromParameters(compressionLevel int, averageChunkSize int, maxi
|
|||||||
config.HashKey = copyFrom.HashKey
|
config.HashKey = copyFrom.HashKey
|
||||||
|
|
||||||
if bitCopy {
|
if bitCopy {
|
||||||
|
config.CompressionLevel = copyFrom.CompressionLevel
|
||||||
|
|
||||||
config.IDKey = copyFrom.IDKey
|
config.IDKey = copyFrom.IDKey
|
||||||
config.ChunkKey = copyFrom.ChunkKey
|
config.ChunkKey = copyFrom.ChunkKey
|
||||||
config.FileKey = copyFrom.FileKey
|
config.FileKey = copyFrom.FileKey
|
||||||
|
|||||||
Reference in New Issue
Block a user