From 8631b5a5047a06f661967b828e2197f5f13c422e Mon Sep 17 00:00:00 2001 From: jaydee Date: Tue, 17 Dec 2024 00:19:46 +0100 Subject: [PATCH] initial --- omv_backup.py | 54 ++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/omv_backup.py b/omv_backup.py index d22a82f..aa7dbcb 100644 --- a/omv_backup.py +++ b/omv_backup.py @@ -170,7 +170,8 @@ if _RESTORE: _APP = ["nginx","ha","gitlab","mailu","bitwarden","esphome","grafana","ingluxdb","kestra","matter-server","mosquitto","octoprint","octoprint2","pihole","unify_block","webhub"] else: _APP = _APP.split(",") - + + for app in _APP: topic = "sectorq/omv/restore/{}".format(app) client.connect(broker,1883,60) @@ -204,24 +205,20 @@ if _RESTORE: #cmnd = "rsync -av --delete {}/ --link-dest {} --exclude=\".cache\" {}".format(SOURCE_DIR, LATEST_LINK, BACKUP_PATH) - cmnd = f"rsync -avz --delete rsync://{BACKUP_HOST}{NEW_BACKUP_DIR} {SOURCE_DIR}" - - - - ans = "y" - print(cmnd) - print("Sync files") - if _TEST: - ans = input("continue?") or "n" - if ans == "y" and _EXECUTE: - status, output = subprocess.getstatusoutput(cmnd) - if app == "heimdall": print("Stopping docker") cmnd = "docker stop heimdall" status, output = subprocess.getstatusoutput(cmnd) + cmnd = f"rsync -avz --delete rsync://{BACKUP_HOST}{NEW_BACKUP_DIR} {SOURCE_DIR}" + ans = "y" + print(cmnd) + print("Sync files") + if _TEST: + ans = input("continue?") or "n" + if ans == "y" and _EXECUTE: + status, output = subprocess.getstatusoutput(cmnd) entries = ["Home Assistant","Nginx Proxy Manager","Portainer","Roundcube","Authentik","Kestra"] for e in entries: cmnd = f"sqlite3 /share/docker_data/heimdall/config/www/app.sqlite \"SELECT url FROM items WHERE title = '{e}'\"" @@ -229,17 +226,24 @@ if _RESTORE: status, output = subprocess.getstatusoutput(cmnd) regex = re.compile(r'[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}') contents = re.sub(regex, IP , output) - - cmnd = f"sqlite3 /share/docker_data/heimdall/config/www/app.sqlite \"UPDATE items SET url = '{contents}' WHERE title = '{e}'\"" print(cmnd) status, output = subprocess.getstatusoutput(cmnd) - cmnd = "docker start heimdall" + cmnd = "docker start heimdall" status, output = subprocess.getstatusoutput(cmnd) + elif app == "nginx": print("Stopping docker") cmnd = "docker stop nginx-app-1" status, output = subprocess.getstatusoutput(cmnd) + cmnd = f"rsync -avz --delete rsync://{BACKUP_HOST}{NEW_BACKUP_DIR} {SOURCE_DIR}" + ans = "y" + print(cmnd) + print("Sync files") + if _TEST: + ans = input("continue?") or "n" + if ans == "y" and _EXECUTE: + status, output = subprocess.getstatusoutput(cmnd) domains = ["sectorq.eu","gitlab.sectorq.eu","ha.sectorq.eu","mail.sectorq.eu","pw.sectorq.eu","semaphore.sectorq.eu","kestra.sectorq.eu","auth.sectorq.eu"] for d in domains: cmnd = f'sqlite3 /share/docker_data/nginx/data/database.sqlite "UPDATE proxy_host SET forward_host = \'{IP}\' WHERE domain_names = \'[\\"{d}\\"]\'"' @@ -265,6 +269,15 @@ if _RESTORE: print("Starting docker") cmnd = "docker start nginx-app-1" status, output = subprocess.getstatusoutput(cmnd) + else: + cmnd = f"rsync -avz --delete rsync://{BACKUP_HOST}{NEW_BACKUP_DIR} {SOURCE_DIR}" + ans = "y" + print(cmnd) + print("Sync files") + if _TEST: + ans = input("continue?") or "n" + if ans == "y" and _EXECUTE: + status, output = subprocess.getstatusoutput(cmnd) now = datetime.datetime.now() ENDTIME = now.strftime("%Y-%m-%d_%H:%M:%S") msg = {"status":"finished","bak_name":app,"start_time":DATETIME,"end_time":ENDTIME,"progress":0} @@ -272,17 +285,10 @@ if _RESTORE: client.publish(topic, json.dumps(msg)) client.disconnect() - print("Getting size of FS") - #cmnd = "du -h --max-depth=0 {}".format(BACKUP_FS) - cmnd = "ssh root@omv.home.lan 'df -h /srv/dev-disk-by-uuid-2f843500-95b6-43b0-bea1-9b67032989b8|awk '\\''{ print $3 }'\\''|tail -1'" - print(cmnd) - status, output = subprocess.getstatusoutput(cmnd) - used_space = (output.split())[0] now = datetime.datetime.now() ENDJOB = now.strftime("%Y-%m-%d_%H:%M:%S") - print("Size : {}".format(used_space)) print("Sending finished status") - msg = {"mode":_MODE,"status":"finished","bak_name":"complete","start_time":STARTTIME,"end_time":ENDJOB,"progress":0,"used_space":used_space} + msg = {"mode":_MODE,"status":"finished","bak_name":"complete","start_time":STARTTIME,"end_time":ENDJOB,"progress":0,"used_space":"?"} print(msg) client.connect(broker,1883,10) client.publish(topic_sum, json.dumps(msg))