rdiff-backup-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/restore.py ..


From: Andrew Ferguson
Subject: [Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/restore.py ...
Date: Thu, 26 Jun 2008 03:19:14 +0000

CVSROOT:        /sources/rdiff-backup
Module name:    rdiff-backup
Changes by:     Andrew Ferguson <owsla> 08/06/26 03:19:14

Modified files:
        .              : CHANGELOG 
        rdiff_backup   : restore.py rpath.py 

Log message:
        Optimize --check-destination and other functions by determining the 
increment
        files server-side instead of client-side. (Patch from Josh Nisly)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/CHANGELOG?cvsroot=rdiff-backup&r1=1.279&r2=1.280
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/restore.py?cvsroot=rdiff-backup&r1=1.60&r2=1.61
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/rpath.py?cvsroot=rdiff-backup&r1=1.120&r2=1.121

Patches:
Index: CHANGELOG
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/CHANGELOG,v
retrieving revision 1.279
retrieving revision 1.280
diff -u -b -r1.279 -r1.280
--- CHANGELOG   23 Jun 2008 13:49:29 -0000      1.279
+++ CHANGELOG   26 Jun 2008 03:19:13 -0000      1.280
@@ -1,6 +1,9 @@
 New in v1.1.17 (????/??/??)
 ---------------------------
 
+Optimize --check-destination and other functions by determining the increment
+files server-side instead of client-side. (Patch from Josh Nisly)
+
 Actually make rdiff-backup robust to failure to read an ACL because the file
 cannot be found. (Andrew Ferguson)
 

Index: rdiff_backup/restore.py
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/rdiff_backup/restore.py,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -b -r1.60 -r1.61
--- rdiff_backup/restore.py     7 Jul 2007 22:43:34 -0000       1.60
+++ rdiff_backup/restore.py     26 Jun 2008 03:19:14 -0000      1.61
@@ -47,8 +47,10 @@
 
        inc_list = []
        for filename in parent_dir.listdir():
+               inc_info = rpath.get_incfile_info(filename)
+               if inc_info and inc_info[3] == basename:
                inc = parent_dir.append(filename)
-               if inc.isincfile() and inc.getincbase_str() == basename:
+                       assert inc.isincfile()
                        inc_list.append(inc)
        return inc_list
 

Index: rdiff_backup/rpath.py
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/rdiff_backup/rpath.py,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -b -r1.120 -r1.121
--- rdiff_backup/rpath.py       10 Jun 2008 13:14:52 -0000      1.120
+++ rdiff_backup/rpath.py       26 Jun 2008 03:19:14 -0000      1.121
@@ -297,6 +297,26 @@
        assert rpath.conn is Globals.local_connection
        return open(rpath.path, "rb")
 
+def get_incfile_info(basename):
+       """Returns None or tuple of 
+       (is_compressed, timestr, type, and basename)"""
+       dotsplit = basename.split(".")
+       if dotsplit[-1] == "gz":
+               compressed = 1
+               if len(dotsplit) < 4: return None
+               timestring, ext = dotsplit[-3:-1]
+       else:
+               compressed = None
+               if len(dotsplit) < 3: return None
+               timestring, ext = dotsplit[-2:]
+       if Time.stringtotime(timestring) is None: return None
+       if not (ext == "snapshot" or ext == "dir" or
+                       ext == "missing" or ext == "diff" or ext == "data"):
+               return None
+       if compressed: basestr = ".".join(dotsplit[:-3])
+       else: basestr = ".".join(dotsplit[:-2])
+       return (compressed, timestring, ext, basestr)
+
 
 class RORPath:
        """Read Only RPath - carry information about a path
@@ -1112,25 +1132,17 @@
                Also sets various inc information used by the *inc* functions.
 
                """
-               if self.index: dotsplit = self.index[-1].split(".")
-               else: dotsplit = self.base.split(".")
-               if dotsplit[-1] == "gz":
-                       self.inc_compressed = 1
-                       if len(dotsplit) < 4: return None
-                       timestring, ext = dotsplit[-3:-1]
+               if self.index: basename = self.index[-1]
+               else: basename = self.base
+
+               inc_info = get_incfile_info(basename)
+
+               if inc_info:
+                       self.inc_compressed, self.inc_timestr, \
+                               self.inc_type, self.inc_basestr = inc_info
+                       return 1
                else:
-                       self.inc_compressed = None
-                       if len(dotsplit) < 3: return None
-                       timestring, ext = dotsplit[-2:]
-               if Time.stringtotime(timestring) is None: return None
-               if not (ext == "snapshot" or ext == "dir" or
-                               ext == "missing" or ext == "diff" or ext == 
"data"):
                        return None
-               self.inc_timestr = timestring
-               self.inc_type = ext
-               if self.inc_compressed: self.inc_basestr = 
".".join(dotsplit[:-3])
-               else: self.inc_basestr = ".".join(dotsplit[:-2])
-               return 1
 
        def isinccompressed(self):
                """Return true if inc file is compressed"""




reply via email to

[Prev in Thread] Current Thread [Next in Thread]