projects
/
sitarba.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
89e63dd
)
make tarbin configurable, move [destination] to [global]
author
Stefan Huber <shuber2@gmx.at>
Mon, 21 May 2012 06:36:06 +0000
(08:36 +0200)
committer
Stefan Huber <shuber2@gmx.at>
Mon, 21 May 2012 06:36:06 +0000
(08:36 +0200)
shbackup
patch
|
blob
|
history
diff --git
a/shbackup
b/shbackup
index e97dbf5182790944bfd2eb1c26987d6e8503ae2e..cd2443727f6ddf851e25c12ded9f4cd9f4f85795 100755
(executable)
--- a/
shbackup
+++ b/
shbackup
@@
-171,8
+171,9
@@
class Config:
checksumfn = "checksum"
def __init__(self):
checksumfn = "checksum"
def __init__(self):
- self.
directory
= None
+ self.
backupdir
= None
self.format = self.formats[0]
self.format = self.formats[0]
+ self.tarbin = "/bin/tar"
self.excludes = []
self.sets = []
self.checksum = None
self.excludes = []
self.sets = []
self.checksum = None
@@
-181,8
+182,9
@@
class Config:
def __repr__(self):
def __repr__(self):
- return "[
directory: " + self.directory
+ \
+ return "[
backupdir: " + self.backupdir
+ \
", format: " + self.format + \
", format: " + self.format + \
+ ", tarbin: " + self.tarbin + \
", excludes: " + repr(self.excludes) + \
", epochs: " + repr(self.epochs) + \
", sets: " + repr(self.sets) + "]"
", excludes: " + repr(self.excludes) + \
", epochs: " + repr(self.epochs) + \
", sets: " + repr(self.sets) + "]"
@@
-197,23
+199,21
@@
class Config:
return realepochs
return realepochs
- def _read_
destination
(self, config, sec):
+ def _read_
global
(self, config, sec):
for opt in config.options(sec):
for opt in config.options(sec):
- if opt=="
directory
":
- self.
directory
= config.get(sec, opt)
- if not os.path.isdir(self.
directory
):
- raise Config.ReadError("
Directory '{0}' does not exist.".format(self.directory
))
+ if opt=="
backupdir
":
+ self.
backupdir
= config.get(sec, opt)
+ if not os.path.isdir(self.
backupdir
):
+ raise Config.ReadError("
Backupdir '{0}' does not exist.".format(self.backupdir
))
elif opt=="format":
self.format = config.get(sec, opt)
if not self.format in Config.formats:
raise Config.ReadError("Invalid 'format' given.")
elif opt=="format":
self.format = config.get(sec, opt)
if not self.format in Config.formats:
raise Config.ReadError("Invalid 'format' given.")
- else:
- raise Config.ReadError("Unknown option '{0}'.".format(opt))
-
-
- def _read_global(self, config, sec):
- for opt in config.options(sec):
- if opt.startswith("exclude"):
+ elif opt=="tarbin":
+ self.tarbin = config.get(sec, opt)
+ if not os.path.isfile(self.tarbin):
+ raise Config.ReadError("Tar binary '{0}' does not exist.".format(self.tarbin))
+ elif opt.startswith("exclude"):
self.excludes += [ config.get(sec, opt) ]
else:
raise Config.ReadError("Unknown option '{0}'.".format(opt))
self.excludes += [ config.get(sec, opt) ]
else:
raise Config.ReadError("Unknown option '{0}'.".format(opt))
@@
-290,16
+290,13
@@
class Config:
config = configparser.RawConfigParser()
config.read(filename)
config = configparser.RawConfigParser()
config.read(filename)
- for reqsec in ["
destination
"]:
+ for reqsec in ["
global
"]:
if not config.has_section(reqsec):
raise Config.ReadError("Mandatory section '" + reqsec + "' is missing.")
for sec in config.sections():
if not config.has_section(reqsec):
raise Config.ReadError("Mandatory section '" + reqsec + "' is missing.")
for sec in config.sections():
- if sec=="destination":
- self._read_destination(config, sec)
-
- elif sec=="global":
+ if sec=="global":
self._read_global(config, sec)
elif sec.startswith("epoch "):
self._read_global(config, sec)
elif sec.startswith("epoch "):
@@
-311,8
+308,8
@@
class Config:
else:
raise Config.ReadError("Unknown section '" + sec + "'.")
else:
raise Config.ReadError("Unknown section '" + sec + "'.")
- if self.
directory
== None:
- raise Config.ReadError("No
destination
directory set.")
+ if self.
backupdir
== None:
+ raise Config.ReadError("No
backup
directory set.")
# Compute checksum of config file
# Compute checksum of config file
@@
-325,7
+322,7
@@
class Config:
f.close()
try:
f.close()
try:
- f = open(os.path.join(self.
directory
, self.checksumfn), 'r')
+ f = open(os.path.join(self.
backupdir
, self.checksumfn), 'r')
self.lastchecksum = f.read().strip()
f.close()
except IOError:
self.lastchecksum = f.read().strip()
f.close()
except IOError:
@@
-341,10
+338,10
@@
class BackupManager:
def listAllDirs(self):
def listAllDirs(self):
- """List all dirs in
destination directory
"""
+ """List all dirs in
backupdir
"""
# Get all entries
# Get all entries
- basedir = self.conf.
directory
+ basedir = self.conf.
backupdir
dirs = os.listdir(basedir)
# Filter directories
return [ d for d in dirs if os.path.isdir(os.path.join(basedir, d)) ]
dirs = os.listdir(basedir)
# Filter directories
return [ d for d in dirs if os.path.isdir(os.path.join(basedir, d)) ]
@@
-393,9
+390,7
@@
class BackupManager:
logfile = logging.getLogger('backuplog')
logfile.info("Running file set: " + fileset.name)
logfile = logging.getLogger('backuplog')
logfile.info("Running file set: " + fileset.name)
- tarpath = "/bin/tar"
fsfn = os.path.join(targetdir, fileset.name) + "." + self.conf.format
fsfn = os.path.join(targetdir, fileset.name) + "." + self.conf.format
-
taropts = []
# Add the since date, if given
taropts = []
# Add the since date, if given
@@
-414,7
+409,7
@@
class BackupManager:
taropts += ["-C", "/"] + [ "./" + d.lstrip("/") for d in fileset.dirs]
# Launch the tar process
taropts += ["-C", "/"] + [ "./" + d.lstrip("/") for d in fileset.dirs]
# Launch the tar process
- tarargs = [
tarpath
] + ["-cpvaf", fsfn] + taropts
+ tarargs = [
self.conf.tarbin
] + ["-cpvaf", fsfn] + taropts
logfile.debug("tar call: " + " ".join(tarargs))
tarp = subprocess.Popen( tarargs, bufsize=-1, \
stdout=subprocess.PIPE, stderr=subprocess.PIPE )
logfile.debug("tar call: " + " ".join(tarargs))
tarp = subprocess.Popen( tarargs, bufsize=-1, \
stdout=subprocess.PIPE, stderr=subprocess.PIPE )
@@
-492,8
+487,8
@@
class BackupManager:
if yesno == "n":
return
if yesno == "n":
return
- # Create new
target
directory
- basedir = self.conf.
directory
+ # Create new
backup
directory
+ basedir = self.conf.
backupdir
dirname = Backup.getDirName(now, epoch, mode)
tmpdirname = dirname + ("-%x" % (random.random()*2e16) )
targetdir = os.path.join(basedir, tmpdirname)
dirname = Backup.getDirName(now, epoch, mode)
tmpdirname = dirname + ("-%x" % (random.random()*2e16) )
targetdir = os.path.join(basedir, tmpdirname)
@@
-567,7
+562,7
@@
class BackupManager:
logging.info("No stale/outdated entries to remove.")
return
logging.info("No stale/outdated entries to remove.")
return
- basedir = self.conf.
directory
+ basedir = self.conf.
backupdir
yesno = self.ask_user_yesno("Remove entries marked by '*'? [y, N] ")
if yesno == "y":
for d in removeDirs:
yesno = self.ask_user_yesno("Remove entries marked by '*'? [y, N] ")
if yesno == "y":
for d in removeDirs: