projects
/
sitarba.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
comments, renames
[sitarba.git]
/
sitarba
diff --git
a/sitarba
b/sitarba
index c236ba0589e68018b41991ba3231ef40b6396ed3..b67925fd27435b8c236de566f5bfc58f175ca8c2 100755
(executable)
--- a/
sitarba
+++ b/
sitarba
@@
-224,6
+224,10
@@
class Config:
e = Epoch()
if name in self.epochs:
raise Config.ReadError("Epoch '{0}' already defined.".format(name))
e = Epoch()
if name in self.epochs:
raise Config.ReadError("Epoch '{0}' already defined.".format(name))
+ p = re.compile(r'^\w+$')
+ if not p.match(name):
+ raise Config.ReadError("Epoch name '{0}' does not only " + \
+ "comprise alphanumeric characters.".format(name))
if name in Epoch.units:
e.unit = name
if name in Epoch.units:
e.unit = name
@@
-267,6
+271,11
@@
class Config:
def _read_set(self, config, sec):
name = sec[4:].strip()
def _read_set(self, config, sec):
name = sec[4:].strip()
+ p = re.compile(r'^\w+$')
+ if not p.match(name):
+ raise Config.ReadError("Set name '{0}' does not only " + \
+ "comprise alphanumeric characters.".format(name))
+
dirs = []
excludes = []
dirs = []
excludes = []
@@
-347,7
+356,7
@@
class BackupManager:
return [ d for d in dirs if os.path.isdir(os.path.join(basedir, d)) ]
return [ d for d in dirs if os.path.isdir(os.path.join(basedir, d)) ]
- def list
Old
Backups(self):
+ def list
Existing
Backups(self):
"""Returns a list of old backups."""
backups = []
"""Returns a list of old backups."""
backups = []
@@
-394,7
+403,7
@@
class BackupManager:
taropts = []
# Tar is verbose is sitarba is verbose
taropts = []
# Tar is verbose is sitarba is verbose
- if LogConf.con.level <= logging.
INFO
:
+ if LogConf.con.level <= logging.
DEBUG
:
taropts += ["--verbose"]
# Add the since date, if given
taropts += ["--verbose"]
# Add the since date, if given
@@
-454,7
+463,7
@@
class BackupManager:
then use mode for given epoch. Use given mode otherwise."""
now = datetime.datetime.now()
then use mode for given epoch. Use given mode otherwise."""
now = datetime.datetime.now()
- oldbackups = self.list
Old
Backups()
+ oldbackups = self.list
Existing
Backups()
# Get epoch of backup
if epoch == None:
# Get epoch of backup
if epoch == None:
@@
-531,14
+540,16
@@
class BackupManager:
"""Prune old backup files"""
allDirs = sorted(self.listAllDirs())
"""Prune old backup files"""
allDirs = sorted(self.listAllDirs())
- # Collect all directories
not matching backup name
+ # Collect all directories
that are removed
removeDirs = [ d for d in allDirs if not Backup.isBackupDir(d) ]
removeDirs = [ d for d in allDirs if not Backup.isBackupDir(d) ]
- # Get all
directories which are kept
- backups = self.list
Old
Backups()
- keepdirs = []
+ # Get all
backups
+ backups = self.list
Existing
Backups()
+ # Group backups by epoch and sort them by age
byepoch = { e : list(sorted( [ b for b in backups if b.epoch == e ], \
byepoch = { e : list(sorted( [ b for b in backups if b.epoch == e ], \
- key=lambda b : b.date, reverse=True)) for e in self.conf.getRealEpochsSorted() }
+ key=lambda b : b.date, reverse=True)) \
+ for e in self.conf.getRealEpochsSorted() }
+ # If we have too many backups of a specific epoch --> add them to remove list
for e in byepoch:
epoch = self.conf.epochs[e]
old = byepoch[e][epoch.numkeeps:]
for e in byepoch:
epoch = self.conf.epochs[e]
old = byepoch[e][epoch.numkeeps:]
@@
-699,7
+710,7
@@
if __name__ == "__main__":
man.backup(epoch, mode)
if cmd == "list":
man.backup(epoch, mode)
if cmd == "list":
- for b in sorted(man.list
Old
Backups(), key=lambda b: b.date):
+ for b in sorted(man.list
Existing
Backups(), key=lambda b: b.date):
print(b.colAlignedString())
if cmd == "prune":
print(b.colAlignedString())
if cmd == "prune":