silent data corruption with checkpoint/restore
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Duplicity |
Fix Released
|
High
|
Unassigned | ||
duplicity (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Lucid |
Fix Released
|
Undecided
|
Unassigned | ||
Maverick |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
I've found a serious bug with checkpoint/restore that leads to
silent data corruption. I'm using duplicity 0.6.09 installed
on a 32-bit Ubuntu system, backing up to the local filesystem.
I discovered this by running two full backups with the same parameters.
duplicity --archive-dir /var/cache/
--include-filelist /tmp/filelist --exclude '**' /
file://
The first backup I allowed to complete without interruption.
The second backup I repeatedly stopped/resumed after the first volume
had been created.
I then restored the backups to /tmp/restore.broken and /tmp/restore and
compared them as follows:
cd /tmp/restore
find |xargs stat -c "%n %U %G %A %s" > statlist
cd /tmp/restore.broken
find |xargs stat -c "%n %U %G %A %s" > statlist
cd ../
diff -u /tmp/restore/
I discovered what looks like one corrupt file for each time I
CTRL-C/resumed the backup. I'm pretty sure these are the files duplicity
resumed from.
Changed in duplicity: | |
assignee: | nobody → Kenneth Loafman (kenneth-loafman) |
importance: | Undecided → High |
milestone: | none → 0.6.13 |
status: | New → Confirmed |
Changed in duplicity: | |
status: | Confirmed → In Progress |
Changed in duplicity: | |
milestone: | 0.6.13 → none |
status: | Fix Committed → Fix Released |
status: | Fix Released → Fix Committed |
status: | Fix Committed → Fix Released |
Changed in duplicity (Ubuntu Lucid): | |
status: | New → Confirmed |
Changed in duplicity (Ubuntu Maverick): | |
status: | New → Confirmed |
Changed in duplicity (Ubuntu Maverick): | |
status: | Fix Committed → Won't Fix |
Changed in duplicity (Ubuntu): | |
importance: | Undecided → High |
Reproduced this bug more simply to rule out anything having to do with --include-filelist and such.
First backup:
duplicity --volsize 5 /data file:// /tmp/backup/ uninterrupted
Second backup:
duplicity --volsize 5 /data file:// /tmp/backup/ interrupted
Interrupted repeatedly with CTRL-C.
Now restore the interrupted and uninterrupted backups and compare. /tmp/backup/ uninterrupted /tmp/restore/ uninterrupted /tmp/backup/ interrupted /tmp/restore/ interrupted
duplicity file://
duplicity file://
cd /tmp/restore/ uninterrupted
find |xargs stat -c "%n %U %G %A %s" > statlist
cd /tmp/restore/ interrupted
find |xargs stat -c "%n %U %G %A %s" > statlist
cd /tmp/restore uninterrupted} /statlist
diff -u {interrupted,