Fri 21 Sep 2012 02:51:05 AM UTC, original submission:
I have backed up this filesystem many, many times. Suddenly, with Ubuntu 12.04, it was no longer possible. Some tiny files would bomb out with Errno 28 when backing up. Full stack trace below.
I verified that enormous amounts of free disk space were present, including on the specifically given tempdir, as well as enormous numbers of free inodes.
Looking closely at the failure, which is happening on xattr setting, I see rdiff-backup committers have already excluded many kinds of errors with a log message.
I suggest adding errno.ENOSPC to the list, since Ubuntu 12.04 now generates this as well. In other words, eas_acls.py line 119 would read:
errno.ENOENT, errno.EINVAL, errno.ENOSPC):
Full stack trace:
Exception '[Errno 28] No space left on device' raised of class '<type 'exceptions.IOError'>':
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in take_action
elif action == "backup": Backup(rps[0], rps[1])
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in Backup
backup.Mirror(rpin, rpout)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 38, in Mirror
DestS.patch(dest_rpath, source_diffiter)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 232, in patch
ITR(diff.index, diff)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rorpiter.py", line 281, in _call_
last_branch.fast_process(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 529, in fast_process
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 559, in patch_to_temp
rpath.copy_attribs(diff_rorp, new)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
if Globals.eas_write: rpout.write_ea(rpin.get_ea())
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1347, in write_ea
ea.write_to_rp(self)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
Traceback (most recent call last):
File "/usr/bin/rdiff-backup", line 30, in <module>
rdiff_backup.Main.error_check_Main(sys.argv[1:])
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in take_action
elif action == "backup": Backup(rps[0], rps[1])
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in Backup
backup.Mirror(rpin, rpout)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 38, in Mirror
DestS.patch(dest_rpath, source_diffiter)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 232, in patch
ITR(diff.index, diff)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rorpiter.py", line 281, in _call_
last_branch.fast_process(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 529, in fast_process
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 559, in patch_to_temp
rpath.copy_attribs(diff_rorp, new)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
if Globals.eas_write: rpout.write_ea(rpin.get_ea())
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1347, in write_ea
ea.write_to_rp(self)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
IOError: [Errno 28] No space left on device
Traceback (most recent call last):
File "./backup.py", line 226, in <module>
subprocess.check_call(rdiffcommand)
File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['rdiff-backup', '--exclude-other-filesystems', '--print-statistics', '--tempdir', '/mnt/backup/tempdir', '-v5', '--exclude-globbing-filelist', 'rdiff-exclusions', '--exclude-globbing-filelist', 'rdiff-exclusions-localhost-media,EC6C26516C2616BC', '/media/EC6C26516C2616BC', '/mnt/backup/localhost/fs-,media,EC6C26516C2616BC']' returned non-zero exit status 1
Until this is fixed, NTFS cannot be backed up on Ubuntu with rdiff-backup, which is a problem to anyone hoping to back up their dual-boot machine.
|