summaryrefslogtreecommitdiff
path: root/example.py
diff options
context:
space:
mode:
Diffstat (limited to 'example.py')
-rwxr-xr-xexample.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/example.py b/example.py
new file mode 100755
index 0000000..6fa6c0d
--- /dev/null
+++ b/example.py
@@ -0,0 +1,54 @@
+#!/usr/bin/python3
+
+import argparse
+import sys
+
+from bupper.repository import Repo
+from bupper.targets import TargetLocal
+
+# define the backup targets
+tgts = (
+ #TargetLocal('local', dirs = ['/usr/local/share']),
+)
+
+def list_targets(tgts):
+ for tgt in tgts:
+ sys.stdout.write('%s\n' % tgt.name)
+
+# parse the commandline
+parser = argparse.ArgumentParser()
+parser.add_argument('-l', '--list-targets', action = 'store_true')
+parser.add_argument('targets', nargs = argparse.REMAINDER)
+args = parser.parse_args()
+
+if args.list_targets:
+ list_targets(tgts)
+ sys.exit(0)
+
+if len(args.targets) > 0:
+ tgts_run = []
+ for requested in args.targets:
+ try:
+ tgts_run.append(next(filter(lambda tgt: tgt.name == requested, tgts)))
+ except StopIteration:
+ sys.stderr.write('Requested target "%s" not defined\n' % requested);
+ sys.exit(1)
+else:
+ tgts_run = tgts
+
+repo = Repo()
+res = repo.backup(tgts_run)
+if not res.all_ok:
+ sys.stderr.write('Error while backing up:\n')
+ for tgt, tgt_res in zip(tgts, res.target_results):
+ if tgt_res.retcode == 0:
+ continue
+
+ sys.stderr.write('Backing up target "%s" failed with code %d, bup output:\n' %
+ (tgt.name, tgt_res.retcode))
+ sys.stderr.write(tgt_res.output.decode('utf-8', errors = 'backslashreplace') + '\n')
+
+ if res.par2_result.retcode != 0:
+ sys.stderr.write('Generating par2 recovery information failed with code %d, bup output:\n' %
+ (res.par2_result.retcode))
+ sys.stderr.write(res.par2_result.output.decode('utf-8', errors = 'backslashreplace') + '\n')