From 9cc56117da11e338fb03632fd3e01e2bf709b1fe Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Sat, 17 Dec 2016 19:05:44 +0100 Subject: [PATCH] add bash script backup_to_fileserver and add various changes to the corresponding python script backup_to_fileserver --- backup_to_fileserver.sh | 5 ++ borg_interface.cfg | 4 +- borg_interface/backup_to_fileserver.py | 63 ++++++++++++++++++++++++++ borg_interface/connectivity.py | 9 ---- borg_interface/interface_functions.py | 1 + borg_interface/interface_variables.py | 2 + borg_interface/test.py | 16 +++++++ 7 files changed, 89 insertions(+), 11 deletions(-) create mode 100755 backup_to_fileserver.sh create mode 100644 borg_interface/backup_to_fileserver.py delete mode 100644 borg_interface/connectivity.py create mode 100644 borg_interface/test.py diff --git a/backup_to_fileserver.sh b/backup_to_fileserver.sh new file mode 100755 index 0000000..5ad474d --- /dev/null +++ b/backup_to_fileserver.sh @@ -0,0 +1,5 @@ +#!/bin/bash +PATH=$PATH:borg_interface/bin/ +source borg_interface/bin/activate +python3 borg_interface/backup_to_fileserver.py +exit 0 diff --git a/borg_interface.cfg b/borg_interface.cfg index 67a9a09..098a682 100644 --- a/borg_interface.cfg +++ b/borg_interface.cfg @@ -1,5 +1,5 @@ [DEFAULT] -# server: fileserver.2li.local -# user: borg +#server: fileserver.2li.local +#user: borg repository_path: /home/andreas/test password: foo diff --git a/borg_interface/backup_to_fileserver.py b/borg_interface/backup_to_fileserver.py new file mode 100644 index 0000000..de1667d --- /dev/null +++ b/borg_interface/backup_to_fileserver.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +import subprocess +import interface_functions +import interface_variables +import sys +import time +import socket + +int_vars = interface_variables + +def take_backup(): + response = subprocess.Popen(['ping', '-c', '1', 'fileserver.2li.local']) + response.wait() + returncode = response.returncode + if returncode == 0: + backup_home() + backup_vms() + prune_home() + prune_vms() + else: + print("Server not available") + sys.exit(0) + +def backup_home(): + path_to_backup = "/home/andreas/" + archive_name = (socket.gethostname() + "-home" + + time.strftime("_%Y-%m-%d_%H:%M")) + + p = subprocess.Popen(['borg', 'create', '--exclude', '/home/andreas/.cache', + '--exclude', '/home/andreas/Downloads', + '::' + archive_name, path_to_backup]) + p.wait() + +def backup_vms(): + path_to_backup = "/mnt/sdc/VMs" + archive_name = (socket.gethostname() + "-VMs" + + time.strftime("_%Y-%m-%d_%H:%M")) + + p = subprocess.Popen(['borg', 'create', + '::' + archive_name, path_to_backup]) + p.wait() + +def prune_home(): + archive_name = (socket.gethostname() + "-home") + p = subprocess.Popen(['borg', 'prune', '--prefix', archive_name, + '--keep-hourly=24', '--keep-daily=7', + '--keep-weekly=4', '--keep-monthly=12', + '--keep-yearly=1']) + p.wait() + +def prune_vms(): + archive_name = (socket.gethostname() + "-VMs") + p = subprocess.Popen(['borg', 'prune', '--prefix', archive_name, + '--keep-hourly=24', '--keep-daily=7', + '--keep-weekly=4', '--keep-monthly=12', + '--keep-yearly=1']) + p.wait() + +interface_functions.configuration() +print("config finished") +interface_functions.pause() +take_backup() +print("backup finished") diff --git a/borg_interface/connectivity.py b/borg_interface/connectivity.py deleted file mode 100644 index 744656a..0000000 --- a/borg_interface/connectivity.py +++ /dev/null @@ -1,9 +0,0 @@ -import os -hostname = "google.com" #example -response = os.system("ping -c 1 " + hostname) - -#and then check the response... -if response == 0: - print hostname, 'is up!' -else: - print hostname, 'is down!' diff --git a/borg_interface/interface_functions.py b/borg_interface/interface_functions.py index e005a3a..c310074 100644 --- a/borg_interface/interface_functions.py +++ b/borg_interface/interface_functions.py @@ -122,6 +122,7 @@ def configuration(): + config['DEFAULT']['server'] + ":" + config['DEFAULT']['repository_path']) + int_vars.server = config['DEFAULT']['server'] else: repository = config['DEFAULT']['repository_path'] # assign the password variable diff --git a/borg_interface/interface_variables.py b/borg_interface/interface_variables.py index d55f0d9..ca9f690 100644 --- a/borg_interface/interface_variables.py +++ b/borg_interface/interface_variables.py @@ -1,2 +1,4 @@ mount_point = None archive_name = None +server = None +std_archive_name = None diff --git a/borg_interface/test.py b/borg_interface/test.py new file mode 100644 index 0000000..c817152 --- /dev/null +++ b/borg_interface/test.py @@ -0,0 +1,16 @@ +import subprocess +import socket +import time +import interface_functions +import sys + +path_to_backup = "/home/andreas/" +archive_name = (socket.gethostname() + "-home" + + time.strftime("_%Y-%m-%d_%H:%M")) + +p = subprocess.Popen(['borg', 'create', '--exclude', '/home/andreas/.cache', + '--exclude', '/home/andreas/Downloads', + '::' + archive_name, path_to_backup], stderr=subprocess.PIPE) +p.wait() + +sys.exit(0)