Mon 20 Jul 2009 10:34:39 AM UTC, original submission:
I ran out of space on a backup device, and now I can't recover it. If I do:
rdiff-backup --check-destination-dir /my/backup/dir
then I get more out of space errors.
Exception '[Errno 28] No space left on device' raised of class '<type 'exceptions.IOError'>':
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 282, in take_action
elif action == "check-destination-dir": CheckDest(rps[0])
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 857, in CheckDest
dest_rp.conn.regress.Regress(dest_rp)
File "/var/lib/python-support/python2.6/rdiff_backup/regress.py", line 71, in Regress
for rf in iterate_meta_rfs(mirror_rp, inc_rpath): ITR(rf.index, rf)
File "/var/lib/python-support/python2.6/rdiff_backup/rorpiter.py", line 281, in _call_
last_branch.fast_process(*args)
File "/var/lib/python-support/python2.6/rdiff_backup/regress.py", line 268, in fast_process
if rf.metadata_rorp.isreg(): self.restore_orig_regfile(rf)
File "/var/lib/python-support/python2.6/rdiff_backup/regress.py", line 290, in restore_orig_regfile
tf.write_from_fileobj(rf.get_restore_fp())
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 1195, in write_from_fileobj
copyfileobj(fp, outfp)
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 64, in copyfileobj
outputfp.write(inbuf)
Traceback (most recent call last):
File "/usr/bin/rdiff-backup", line 30, in <module>
rdiff_backup.Main.error_check_Main(sys.argv[1:])
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 282, in take_action
elif action == "check-destination-dir": CheckDest(rps[0])
File "/var/lib/python-support/python2.6/rdiff_backup/Main.py", line 857, in CheckDest
dest_rp.conn.regress.Regress(dest_rp)
File "/var/lib/python-support/python2.6/rdiff_backup/regress.py", line 71, in Regress
for rf in iterate_meta_rfs(mirror_rp, inc_rpath): ITR(rf.index, rf)
File "/var/lib/python-support/python2.6/rdiff_backup/rorpiter.py", line 281, in _call_
last_branch.fast_process(*args)
File "/var/lib/python-support/python2.6/rdiff_backup/regress.py", line 268, in fast_process
if rf.metadata_rorp.isreg(): self.restore_orig_regfile(rf)
File "/var/lib/python-support/python2.6/rdiff_backup/regress.py", line 290, in restore_orig_regfile
tf.write_from_fileobj(rf.get_restore_fp())
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 1195, in write_from_fileobj
copyfileobj(fp, outfp)
File "/var/lib/python-support/python2.6/rdiff_backup/rpath.py", line 64, in copyfileobj
outputfp.write(inbuf)
IOError: [Errno 28] No space left on device
I tried deleting files on the device (not related to the backup) but this seemed to do no good (according to 'df'). I'm guessing this may be because I have mounted the device with the 'acl' option (which I need to backup the ACLs on my source device). I can delete quite large files on the backup device without gaining any 'available' space.
This is a very serious bug in rdiff-backup. I cannot regress the backup, or remove older increments etc, so my backup is now effectively useless.
A workaround would be manually remove old increment files. But I have no idea how to do this, and would only think of doing it via a script which did the right thing, otherwise I just risk corrupting my backup further - as the man page says:
<<<
Note that you should not write to the mirror directory except with rdiff-backup.
>>>
|