mirror of
https://github.com/jkl1337/duplicacy.git
synced 2026-01-02 03:34:39 -06:00
Handle zero-byte files correctly
This commit fixed 2 bugs. The first bug occurs when an incomplete backup contains a zero-byte file and no chunks. The second bug occurs when the repository contains only zero-byte files.
This commit is contained in:
@@ -301,7 +301,7 @@ func (manager *BackupManager) Backup(top string, quickMode bool, threads int, ta
|
||||
if compareResult == 0 {
|
||||
// No need to check if it is in hash mode -- in that case remote listing is nil
|
||||
if localEntry.IsSameAs(remoteEntry) && localEntry.IsFile() {
|
||||
|
||||
if localEntry.Size > 0 {
|
||||
localEntry.Hash = remoteEntry.Hash
|
||||
localEntry.StartOffset = remoteEntry.StartOffset
|
||||
localEntry.EndOffset = remoteEntry.EndOffset
|
||||
@@ -321,6 +321,7 @@ func (manager *BackupManager) Backup(top string, quickMode bool, threads int, ta
|
||||
localEntry.StartChunk = remoteEntry.StartChunk - delta
|
||||
localEntry.EndChunk = remoteEntry.EndChunk - delta
|
||||
preservedFileSize += localEntry.Size
|
||||
}
|
||||
} else {
|
||||
totalModifiedFileSize += localEntry.Size
|
||||
if localEntry.Size > 0 {
|
||||
@@ -1047,6 +1048,7 @@ func (manager *BackupManager) UploadSnapshot(chunkOperator *ChunkOperator, top s
|
||||
|
||||
uploadEntryInfoFunc := func(entry *Entry) error {
|
||||
|
||||
if entry.IsFile() && entry.Size > 0 {
|
||||
delta := entry.StartChunk - len(chunkHashes) + 1
|
||||
if entry.StartChunk != lastChunk {
|
||||
chunkHashes = append(chunkHashes, snapshot.ChunkHashes[entry.StartChunk])
|
||||
@@ -1063,8 +1065,7 @@ func (manager *BackupManager) UploadSnapshot(chunkOperator *ChunkOperator, top s
|
||||
entry.StartChunk -= delta
|
||||
entry.EndChunk -= delta
|
||||
|
||||
if entry.IsFile() {
|
||||
delta := entry.EndChunk - entry.StartChunk
|
||||
delta = entry.EndChunk - entry.StartChunk
|
||||
entry.StartChunk -= lastEndChunk
|
||||
lastEndChunk = entry.EndChunk
|
||||
entry.EndChunk = delta
|
||||
|
||||
Reference in New Issue
Block a user