borg container image feature/review-docker: pipelines and scripts revisions #1
77
README.md
77
README.md
@@ -85,75 +85,58 @@ configs:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
borg-backup:
|
borg:
|
||||||
restart: no
|
image: git.limbosolutions.com/kb/borg-backup:alpha
|
||||||
image: git.limbosolutions.com/kb/borg-backup:latest
|
|
||||||
# execute loadenv before you re scripts
|
environment:
|
||||||
# so some enviromnent variables are set
|
- 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:
|
configs:
|
||||||
- source: backup_script
|
- source: backup_script
|
||||||
target: /app/backup-scripts/backup
|
target: /app/backup-scripts/backup
|
||||||
|
mode: 0400
|
||||||
|
|
||||||
- source: id_ed25519
|
- source: id_ed25519
|
||||||
target: /root/.ssh/id_ed25519
|
target: /root/.ssh/id_ed25519
|
||||||
mode: 0400
|
mode: 0400
|
||||||
- source: borg_key
|
- source: borg_key
|
||||||
target: /app/borg/key
|
target: /app/borg/key
|
||||||
mode: 0400
|
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
|
|
||||||
|
|
||||||
configs:
|
configs:
|
||||||
# $$ instead of $ so it replaced during runtime and not on docker compose up
|
|
||||||
|
|
||||||
backup_script:
|
backup_script:
|
||||||
content: |
|
content: |
|
||||||
|
|
||||||
#/!bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# while true; do
|
|
||||||
# sleep 5
|
|
||||||
# done
|
|
||||||
|
|
||||||
SCRIPT_START_TIME=$$(date +%s)
|
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
|
# 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 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
|
if [ $$REPO_SIZE_IN_BYTES -gt $$REPO_SYNC_MAX_SIZE ]; then \
|
||||||
borg info ${BORG_REPO}
|
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
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
id_ed25519:
|
id_ed25519:
|
||||||
file: ~/.ssh/id_ed25519
|
file: ~/.ssh/id_ed25519
|
||||||
|
|
||||||
borg_key:
|
borg_key:
|
||||||
content: |
|
content: |
|
||||||
|
|||||||
Reference in New Issue
Block a user