Too many symbolic links

From RdiffBackupWiki

Jump to: navigation, search

Symptom (backing up using Version <= 1.2.2):

  • Exception '[Errno 40] Too many levels of symbolic links' raised of class '<type 'exceptions.IOError'>'

Problem:

  • the structure of links simple brakes rdiff-backup's process

Solution:

  • verbose output of version 1.2.3 will show more verbose information on the reason why the backup got broken...

Log extract:

 [... regular verbose messages ...]
 Exception '[Errno 40] Too many levels of symbolic links' raised of class '<type 'exceptions.IOError'>':
 File "/usr/lib/python2.5/site-packages/rdiff_backup/robust.py", line 32, in check_common_error
   try: return function(*args)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 1123, in append
   return self.__class__(self.conn, self.base, self.index + (ext,))
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 868, in __init__
   else: self.setdata()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 893, in setdata
   if self.lstat(): self.conn.rpath.setdata_local(self)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 1470, in setdata_local
   if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/eas_acls.py", line 584, in rpath_ea_get
   ea.read_from_rp(rp)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/eas_acls.py", line 59, in read_from_rp
   try: attr_list = rp.conn.xattr.listxattr(rp.path, rp.issym())
 
 Exception '[Errno 40] Too many levels of symbolic links' raised of class '<type 'exceptions.IOError'>':
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
   try: Main(arglist)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 324, in Main
   take_action(rps)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 280, in take_action
   elif action == "backup": Backup(rps[0], rps[1])
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 346, in Backup
   backup.Mirror(rpin, rpout)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 38, in Mirror
   DestS.patch(dest_rpath, source_diffiter)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 230, in patch
   for diff in rorpiter.FillInIter(source_diffiter, dest_rpath):
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rorpiter.py", line 177, in FillInIter
   for rp in rpiter:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 103, in get_diffs
   for dest_sig in dest_sigiter:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 166, in get_sigs
   for src_rorp, dest_rorp in cls.CCPP:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 320, in next
   source_rorp, dest_rorp = self.iter.next()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rorpiter.py", line 103, in Collate2Iters
   for relem1 in riter1:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rorpiter.py", line 342, in next
   next_elem = self.iter.next()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/selection.py", line 132, in Iterate_fast
   try: rpath, val = diryield_stack[-1].next()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/selection.py", line 120, in diryield
   rpath.append, (filename,))
 File "/usr/lib/python2.5/site-packages/rdiff_backup/robust.py", line 32, in check_common_error
   try: return function(*args)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 1123, in append
   return self.__class__(self.conn, self.base, self.index + (ext,))
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 868, in __init__
   else: self.setdata()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 893, in setdata
   if self.lstat(): self.conn.rpath.setdata_local(self)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 1470, in setdata_local
   if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/eas_acls.py", line 584, in rpath_ea_get
   ea.read_from_rp(rp)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/eas_acls.py", line 59, in read_from_rp
   try: attr_list = rp.conn.xattr.listxattr(rp.path, 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.5/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
   try: Main(arglist)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 324, in Main
   take_action(rps)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 280, in take_action
   elif action == "backup": Backup(rps[0], rps[1])
 File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 346, in Backup
   backup.Mirror(rpin, rpout)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 38, in Mirror
   DestS.patch(dest_rpath, source_diffiter)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 230, in patch
   for diff in rorpiter.FillInIter(source_diffiter, dest_rpath):
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rorpiter.py", line 177, in FillInIter
   for rp in rpiter:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 103, in get_diffs
   for dest_sig in dest_sigiter:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 166, in get_sigs
   for src_rorp, dest_rorp in cls.CCPP:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/backup.py", line 320, in next
   source_rorp, dest_rorp = self.iter.next()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rorpiter.py", line 103, in Collate2Iters
   for relem1 in riter1:
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rorpiter.py", line 342, in next
   next_elem = self.iter.next()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/selection.py", line 132, in Iterate_fast
   try: rpath, val = diryield_stack[-1].next()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/selection.py", line 120, in diryield
   rpath.append, (filename,))
 File "/usr/lib/python2.5/site-packages/rdiff_backup/robust.py", line 32, in check_common_error
   try: return function(*args)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 1123, in append
   return self.__class__(self.conn, self.base, self.index + (ext,))
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 868, in __init__
   else: self.setdata()
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 893, in setdata
   if self.lstat(): self.conn.rpath.setdata_local(self)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 1470, in setdata_local
   if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/eas_acls.py", line 584, in rpath_ea_get
   ea.read_from_rp(rp)
 File "/usr/lib/python2.5/site-packages/rdiff_backup/eas_acls.py", line 59, in read_from_rp
   try: attr_list = rp.conn.xattr.listxattr(rp.path, rp.issym())
 IOError: [Errno 40] Too many levels of symbolic links
Personal tools