From 16ea5b0ce7190fc368e07e61e7163c76deede4b1 Mon Sep 17 00:00:00 2001 From: bescoto Date: Sat, 14 Dec 2002 06:39:31 +0000 Subject: Write mirror metadata when incrementing git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@247 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109 --- rdiff-backup/rdiff_backup/Globals.py | 1 + rdiff-backup/rdiff_backup/highlevel.py | 32 ++++++++++++++++++++++---------- rdiff-backup/rdiff_backup/metadata.py | 12 ++++++++---- rdiff-backup/testing/chdir-wrapper | 4 +++- 4 files changed, 34 insertions(+), 15 deletions(-) (limited to 'rdiff-backup') diff --git a/rdiff-backup/rdiff_backup/Globals.py b/rdiff-backup/rdiff_backup/Globals.py index 49d84db..61991d4 100644 --- a/rdiff-backup/rdiff_backup/Globals.py +++ b/rdiff-backup/rdiff_backup/Globals.py @@ -284,4 +284,5 @@ def set_select(dsrpath, tuplelist, quote_mode, *filelists): from rpath import * # kludge to avoid circularity - not needed in this module +from log import * # another kludge from selection import * diff --git a/rdiff-backup/rdiff_backup/highlevel.py b/rdiff-backup/rdiff_backup/highlevel.py index 3aa6491..48cb123 100644 --- a/rdiff-backup/rdiff_backup/highlevel.py +++ b/rdiff-backup/rdiff_backup/highlevel.py @@ -21,14 +21,6 @@ from __future__ import generators from static import * -from log import * -from rpath import * -from robust import * -from increment import * -from destructive_stepping import * -from rorpiter import * -import Globals, Hardlink, MiscStats - class SkipFileException(Exception): """Signal that the current file should be skipped but then continue @@ -207,9 +199,21 @@ class HLDestinationStruct: return generate_dissimilar() def get_sigs(cls, baserp, src_init_iter): - """Return signatures of all dissimilar files""" + """Return signatures of all dissimilar files + + Also writes all metadata to the metadata file. + + """ dest_iters1 = cls.split_initial_dsiter() - dissimilars = cls.get_dissimilar(baserp, src_init_iter, dest_iters1) + def duplicate_with_write(src_init_iter): + """Return iterator but write metadata of what passes through""" + metadata.OpenMetadata() + for rorp in src_init_iter: + metadata.WriteMetadata(rorp) + yield rorp + metadata.CloseMetadata() + dup = duplicate_with_write(src_init_iter) + dissimilars = cls.get_dissimilar(baserp, dup, dest_iters1) return RORPIter.Signatures(dissimilars) def get_dsrp(cls, dest_rpath, index): @@ -331,3 +335,11 @@ class HLDestinationStruct: raise MakeClass(HLDestinationStruct) + +from log import * +from rpath import * +from robust import * +from increment import * +from destructive_stepping import * +from rorpiter import * +import Globals, Hardlink, MiscStats, metadata diff --git a/rdiff-backup/rdiff_backup/metadata.py b/rdiff-backup/rdiff_backup/metadata.py index 50a7704..d8e7216 100644 --- a/rdiff-backup/rdiff_backup/metadata.py +++ b/rdiff-backup/rdiff_backup/metadata.py @@ -56,7 +56,7 @@ field names and values. from __future__ import generators import re, gzip -from rdiff_backup import log, Globals, rpath, Time +import log, Globals, rpath, Time class ParsingError(Exception): """This is raised when bad or unparsable data is received""" @@ -260,11 +260,13 @@ metadata_rp = None metadata_fileobj = None def OpenMetadata(rp = None, compress = 1): """Open the Metadata file for writing""" - global metadata_filename, metadata_fileobj + global metadata_rp, metadata_fileobj assert not metadata_fileobj, "Metadata file already open" if rp: metadata_rp = rp - else: metadata_rp = Globals.rbdir.append("mirror_metadata.%s.data.gz" % - (Time.curtimestr,)) + else: + if compress: filename_base = "mirror_metadata.%s.data.gz" + else: filename_base = "mirror_metadata.%s.data" + metadata_rp = Globals.rbdir.append(filename_base % (Time.curtimestr,)) metadata_fileobj = metadata_rp.open("wb", compress = compress) def WriteMetadata(rorp): @@ -307,3 +309,5 @@ def GetMetadata_at_time(rpdir, time, restrict_index = None, rplist = None): if Time.stringtotime(rp.getinctime()) == time: return GetMetadata(rp, restrict_index) return None + + diff --git a/rdiff-backup/testing/chdir-wrapper b/rdiff-backup/testing/chdir-wrapper index 1d0db7d..ff0155f 100755 --- a/rdiff-backup/testing/chdir-wrapper +++ b/rdiff-backup/testing/chdir-wrapper @@ -9,8 +9,10 @@ the server. Otherwise will start the server without a chdir. import os, sys +olddir = os.getcwd() if len(sys.argv) > 1: os.chdir(sys.argv[1]) #PipeConnection(sys.stdin, sys.stdout).Server() #os.system("/home/ben/prog/python/rdiff-backup/rdiff-backup --server") -os.system("/home/ben/prog/python/rdiff-backup/testing/server.py /home/ben/prog/python/rdiff-backup/src") +#os.system("/home/ben/prog/rdiff-backup/server.py /home/ben/prog/python/rdiff-backup/src") +os.system("%s/server.py" % (olddir,)) -- cgit v1.2.1