summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup
diff options
context:
space:
mode:
authorbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-12-20 05:43:37 +0000
committerbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-12-20 05:43:37 +0000
commit5d3974dcd81e009293afe2372364983ad3810568 (patch)
tree64a99f5130cdd780eb1898861c6d200737cbd2a4 /rdiff-backup/rdiff_backup
parentea85480d1d7482802d213ee35624211f31b8ace5 (diff)
downloadrdiff-backup-5d3974dcd81e009293afe2372364983ad3810568.tar.gz
Removed --mirror-only feature and most checkpointing/recovery code
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@250 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/rdiff_backup')
-rw-r--r--rdiff-backup/rdiff_backup/Main.py54
-rw-r--r--rdiff-backup/rdiff_backup/highlevel.py45
2 files changed, 22 insertions, 77 deletions
diff --git a/rdiff-backup/rdiff_backup/Main.py b/rdiff-backup/rdiff_backup/Main.py
index 67141e1..2b3d497 100644
--- a/rdiff-backup/rdiff_backup/Main.py
+++ b/rdiff-backup/rdiff_backup/Main.py
@@ -48,23 +48,22 @@ def parse_cmdlineoptions(arglist):
try: return open(filename, "r")
except IOError: Log.FatalError("Error opening file %s" % filename)
- try: optlist, args = getopt.getopt(arglist, "blmr:sv:V",
- ["backup-mode", "calculate-average",
- "change-source-perms", "chars-to-quote=",
- "checkpoint-interval=", "current-time=", "exclude=",
- "exclude-device-files", "exclude-filelist=",
+ try: optlist, args = getopt.getopt(arglist, "blr:sv:V",
+ ["backup-mode", "calculate-average", "change-source-perms",
+ "chars-to-quote=", "checkpoint-interval=", "current-time=",
+ "exclude=", "exclude-device-files", "exclude-filelist=",
"exclude-filelist-stdin", "exclude-globbing-filelist=",
"exclude-mirror=", "exclude-other-filesystems",
"exclude-regexp=", "exclude-special-files", "force",
"include=", "include-filelist=", "include-filelist-stdin",
"include-globbing-filelist=", "include-regexp=",
- "list-changed-since=", "list-increments", "mirror-only",
- "no-compression", "no-compression-regexp=", "no-hard-links",
- "no-resume", "null-separator", "parsable-output",
- "print-statistics", "quoting-char=", "remote-cmd=",
- "remote-schema=", "remove-older-than=", "restore-as-of=",
- "restrict=", "restrict-read-only=", "restrict-update-only=",
- "resume", "resume-window=", "server", "sleep-ratio=",
+ "list-changed-since=", "list-increments", "no-compression",
+ "no-compression-regexp=", "no-hard-links", "no-resume",
+ "null-separator", "parsable-output", "print-statistics",
+ "quoting-char=", "remote-cmd=", "remote-schema=",
+ "remove-older-than=", "restore-as-of=", "restrict=",
+ "restrict-read-only=", "restrict-update-only=", "resume",
+ "resume-window=", "server", "sleep-ratio=",
"ssh-no-compression", "terminal-verbosity=", "test-server",
"verbosity=", "version", "windows-mode",
"windows-time-format"])
@@ -115,7 +114,6 @@ def parse_cmdlineoptions(arglist):
restore_timestr, action = arg, "list-changed-since"
elif opt == "-l" or opt == "--list-increments":
action = "list-increments"
- elif opt == "-m" or opt == "--mirror-only": action = "mirror"
elif opt == "--no-compression": Globals.set("compression", None)
elif opt == "--no-compression-regexp":
Globals.set("no_compression_regexp_string", arg)
@@ -185,8 +183,7 @@ def set_action():
commandline_error("No arguments given")
if l > 0 and action == "server":
commandline_error("Too many arguments given")
- if l < 2 and (action == "backup" or action == "mirror" or
- action == "restore-as-of"):
+ if l < 2 and (action == "backup" or action == "restore-as-of"):
commandline_error("Two arguments are required (source, destination).")
if l == 2 and (action == "list-increments" or
action == "remove-older-than" or
@@ -228,7 +225,6 @@ def take_action(rps):
elif action == "backup": Backup(rps[0], rps[1])
elif action == "restore": restore(*rps)
elif action == "restore-as-of": RestoreAsOf(rps[0], rps[1])
- elif action == "mirror": Mirror(rps[0], rps[1])
elif action == "test-server": SetConnections.TestConnections()
elif action == "list-changed-since": ListChangedSince(rps[0])
elif action == "list-increments": ListIncrements(rps[0])
@@ -254,37 +250,15 @@ def Main(arglist):
cleanup()
-def Mirror(src_rp, dest_rp):
- """Turn dest_path into a copy of src_path"""
- Log("Mirroring %s to %s" % (src_rp.path, dest_rp.path), 5)
- mirror_check_paths(src_rp, dest_rp)
- # Since no "rdiff-backup-data" dir, use root of destination.
- SetConnections.UpdateGlobal('rbdir', dest_rp)
- SetConnections.BackupInitConnections(src_rp.conn, dest_rp.conn)
- backup_init_select(src_rp, dest_rp)
- HighLevel.Mirror(src_rp, dest_rp)
-
-def mirror_check_paths(rpin, rpout):
- """Check paths and return rpin, rpout"""
- if not rpin.lstat():
- Log.FatalError("Source directory %s does not exist" % rpin.path)
- if rpout.lstat() and not force: Log.FatalError(
-"""Destination %s exists so continuing could mess it up. Run
-rdiff-backup with the --force option if you want to mirror anyway.""" %
- rpout.path)
-
-
def Backup(rpin, rpout):
"""Backup, possibly incrementally, src_path to dest_path."""
SetConnections.BackupInitConnections(rpin.conn, rpout.conn)
backup_init_select(rpin, rpout)
backup_init_dirs(rpin, rpout)
- RSI = Globals.backup_writer.Resume.ResumeCheck()
- SaveState.init_filenames()
if prevtime:
Time.setprevtime(prevtime)
- HighLevel.Mirror_and_increment(rpin, rpout, incdir, RSI)
- else: HighLevel.Mirror(rpin, rpout, incdir, RSI)
+ HighLevel.Mirror_and_increment(rpin, rpout, incdir)
+ else: HighLevel.Mirror(rpin, rpout, incdir)
rpout.conn.Main.backup_touch_curmirror_local(rpin, rpout)
def backup_init_select(rpin, rpout):
diff --git a/rdiff-backup/rdiff_backup/highlevel.py b/rdiff-backup/rdiff_backup/highlevel.py
index 48cb123..eb3628f 100644
--- a/rdiff-backup/rdiff_backup/highlevel.py
+++ b/rdiff-backup/rdiff_backup/highlevel.py
@@ -40,7 +40,7 @@ class HighLevel:
accompanying diagram.
"""
- def Mirror(src_rpath, dest_rpath, inc_rpath = None, session_info = None):
+ def Mirror(src_rpath, dest_rpath, inc_rpath):
"""Turn dest_rpath into a copy of src_rpath
If inc_rpath is true, then this is the initial mirroring of an
@@ -51,14 +51,10 @@ class HighLevel:
SourceS = src_rpath.conn.HLSourceStruct
DestS = dest_rpath.conn.HLDestinationStruct
- SourceS.set_session_info(session_info)
- DestS.set_session_info(session_info)
src_init_dsiter = SourceS.split_initial_dsiter()
dest_sigiter = DestS.get_sigs(dest_rpath, src_init_dsiter)
diffiter = SourceS.get_diffs_and_finalize(dest_sigiter)
- if inc_rpath:
- DestS.patch_w_datadir_writes(dest_rpath, diffiter, inc_rpath)
- else: DestS.patch_and_finalize(dest_rpath, diffiter)
+ DestS.patch_w_datadir_writes(dest_rpath, diffiter, inc_rpath)
dest_rpath.setdata()
@@ -68,9 +64,6 @@ class HighLevel:
SourceS = src_rpath.conn.HLSourceStruct
DestS = dest_rpath.conn.HLDestinationStruct
- SourceS.set_session_info(session_info)
- DestS.set_session_info(session_info)
- if not session_info: dest_rpath.conn.SaveState.touch_last_file()
src_init_dsiter = SourceS.split_initial_dsiter()
dest_sigiter = DestS.get_sigs(dest_rpath, src_init_dsiter)
diffiter = SourceS.get_diffs_and_finalize(dest_sigiter)
@@ -84,19 +77,9 @@ MakeStatic(HighLevel)
class HLSourceStruct:
"""Hold info used by HL on the source side"""
- _session_info = None # set to si if resuming
- def set_session_info(cls, session_info):
- cls._session_info = session_info
-
- def iterate_from(cls):
- """Supply more aruments to DestructiveStepping.Iterate_from"""
- if cls._session_info is None: Globals.select_source.set_iter()
- else: Globals.select_source.set_iter(cls._session_info.last_index, 1)
- return Globals.select_source
-
def split_initial_dsiter(cls):
"""Set iterators of all dsrps from rpath, returning one"""
- dsiter = cls.iterate_from()
+ dsiter = Globals.select_source.set_iter()
initial_dsiter1, cls.initial_dsiter2 = Iter.multiplex(dsiter, 2)
return initial_dsiter1
@@ -133,18 +116,10 @@ MakeClass(HLSourceStruct)
class HLDestinationStruct:
"""Hold info used by HL on the destination side"""
_session_info = None # set to si if resuming
- def set_session_info(cls, session_info):
- cls._session_info = session_info
-
- def iterate_from(cls):
- """Return selection iterator to iterate all the mirror files"""
- if cls._session_info is None: Globals.select_mirror.set_iter()
- else: Globals.select_mirror.set_iter(cls._session_info.last_index)
- return Globals.select_mirror
-
def split_initial_dsiter(cls):
"""Set initial_dsiters (iteration of all dsrps from rpath)"""
- result, cls.initial_dsiter2 = Iter.multiplex(cls.iterate_from(), 2)
+ result, cls.initial_dsiter2 = \
+ Iter.multiplex(Globals.select_mirror.set_iter(), 2)
return result
def get_dissimilar(cls, baserp, src_init_iter, dest_init_iter):
@@ -287,7 +262,6 @@ class HLDestinationStruct:
if diff_rorp and diff_rorp.isplaceholder(): diff_rorp = None
ITR(dsrp.index, diff_rorp, dsrp)
finalizer(dsrp.index, dsrp)
- SaveState.checkpoint(ITR, finalizer, dsrp)
finished_dsrp = dsrp
ITR.Finish()
finalizer.Finish()
@@ -296,7 +270,6 @@ class HLDestinationStruct:
if Globals.preserve_hardlinks: Hardlink.final_writedata()
MiscStats.close_dir_stats_file()
MiscStats.write_session_statistics(ITR.root_branch)
- SaveState.checkpoint_remove()
def patch_increment_and_finalize(cls, dest_rpath, diffs, inc_rpath):
"""Apply diffs, write increment if necessary, and finalize"""
@@ -314,7 +287,6 @@ class HLDestinationStruct:
if diff_rorp and diff_rorp.isplaceholder(): diff_rorp = None
ITR(index, diff_rorp, dsrp)
finalizer(index, dsrp)
- SaveState.checkpoint(ITR, finalizer, dsrp)
finished_dsrp = dsrp
ITR.Finish()
finalizer.Finish()
@@ -323,15 +295,14 @@ class HLDestinationStruct:
if Globals.preserve_hardlinks: Hardlink.final_writedata()
MiscStats.close_dir_stats_file()
MiscStats.write_session_statistics(ITR.root_branch)
- SaveState.checkpoint_remove()
def handle_last_error(cls, dsrp, finalizer, ITR):
"""If catch fatal error, try to checkpoint before exiting"""
Log.exception(1, 2)
TracebackArchive.log()
- SaveState.checkpoint(ITR, finalizer, dsrp, 1)
- if Globals.preserve_hardlinks: Hardlink.final_checkpoint(Globals.rbdir)
- SaveState.touch_last_file_definitive()
+ #SaveState.checkpoint(ITR, finalizer, dsrp, 1)
+ #if Globals.preserve_hardlinks: Hardlink.final_checkpoint(Globals.rbdir)
+ #SaveState.touch_last_file_definitive()
raise
MakeClass(HLDestinationStruct)