From fed2735d96f5e9d3564c271fbb818510446f9ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Fernandes?= Date: Sun, 21 Sep 2025 20:20:57 +0100 Subject: [PATCH] . --- README.md | 77 ++++++++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 7e23eaf..ee77311 100644 --- a/README.md +++ b/README.md @@ -85,75 +85,58 @@ configs: ```yaml services: - borg-backup: - restart: no - image: git.limbosolutions.com/kb/borg-backup:latest - # execute loadenv before you re scripts - # so some enviromnent variables are set + borg: + image: git.limbosolutions.com/kb/borg-backup:alpha + + environment: + - BORG_REPO=${BORG_REPO} + - BORG_RSH=${BORG_RSH} + - OFFSITE_TARGET_FOLDER=${OFFSITE_TARGET_FOLDER} + - BORG_PASSPHRASE="${BORG_PASSPHRASE}" + - REPO_SYNC_MAX_SIZE=10737418240 #10GB + - MODE=SCRIPT + volumes: + - "/home/mf/repos:/backup/repos" configs: - source: backup_script target: /app/backup-scripts/backup + mode: 0400 + - source: id_ed25519 target: /root/.ssh/id_ed25519 mode: 0400 - source: borg_key target: /app/borg/key - mode: 0400 - environment: - - BORG_REPO=${BORG_REPO} - - BORG_RSH=ssh -o StrictHostKeyChecking=no -p 2222 - - BORG_PASSPHRASE="${BORG_PASSPHRASE}" - - REPO_SYNC_MAX_SIZE=10737418240 #10GB - - MODE=SCRIPT - - volumes: - - "./backup-scripts:/app/backup-scripts" - - /home/user/data:/mnt/backup - + mode: 0400 configs: - # $$ instead of $ so it replaced during runtime and not on docker compose up - backup_script: content: | - #/!bin/bash + #!/bin/bash set -e - - # while true; do - # sleep 5 - # done - SCRIPT_START_TIME=$$(date +%s) - - borg create $${BORG_REPO}::repos-$$(date +%Y%m%d%H%M%S) /mnt/backup - - #cleanup - borg prune -v --list --keep-daily=10 --keep-weekly=7 --keep-monthly=-1 $${BORG_REPO} --glob-archives='backup*' - borg compact $${BORG_REPO} + borg create $${BORG_REPO}::backup-$$(date +%Y%m%d%H%M%S) /backup + borg prune -v --list --keep-daily=10 --keep-weekly=7 --keep-monthly=-1 $${BORG_REPO} --glob-archives='backup-*' + # check repo size - REPO_SIZE_IN_BYTES=$$(remote-connect du -b "$$SSH_FOLDER" -d 0 | awk '{print $$1}') + REPO_SIZE_IN_BYTES="$$(remote-get-folder-size)" echo "Repository size: $$((REPO_SIZE_IN_BYTES / 1024 / 1024)) MB" - echo "Repository max size: $$((REPO_SYNC_MAX_SIZE / 1024 / 1024)) MB" - if [ $$REPO_SIZE_IN_BYTES -gt $$REPO_SYNC_MAX_SIZE ]; then \ - echo "ERROR: Repository size exceeds $$REPO_SYNC_MAX_SIZE"; - exit 1; - else - # Repository size is within limits for offsite sync - # ssh to backup server and enforce rclone to onedrive - remote-connect "rclone sync $$SSH_FOLDER xxxxx:.backups/xxxxxx" && \ - SCRIPT_DURATION=$$(($(date +%s) - SCRIPT_START_TIME)) && \ - echo "INFO: Finished Backup (offsite) ($((SCRIPT_DURATION / 60 / 60)):$$((SCRIPT_DURATION / 60)):$$((SCRIPT_DURATION % 60))) " - fi - #outputs info - borg info ${BORG_REPO} + if [ $$REPO_SIZE_IN_BYTES -gt $$REPO_SYNC_MAX_SIZE ]; then \ + echo "ERROR: Repository size exceeds $$REPO_SYNC_MAX_SIZE"; + exit 1; + else + # Repository size is within limits for offsite sync + # ssh to backup server and enforce rclone to offsite + remote-connect "rclone sync $$SSH_FOLDER $$OFFSITE_TARGET_FOLDER --progress" && \ + echo "INFO: Backup offsite sync Finished.($$(date -u -d "@$$(($$(date +%s) - SCRIPT_START_TIME))" +%H:%M:%S))" + fi exit 0 - id_ed25519: - file: ~/.ssh/id_ed25519 + file: ~/.ssh/id_ed25519 borg_key: content: |