diff --git a/app/backup b/app/backup deleted file mode 100755 index c6ed907..0000000 --- a/app/backup +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -REPO="/backup/borgrepo" -MOUNT_BASE="/tmp/borg-sshfs" - -export BORG_PASSPHRASE -BORG_PASSPHRASE="$(cat /app/host_vars/repokey)" - -HOSTS_FILE="$(dirname "$0")/host_vars/hosts" -TIMESTAMP="$(date +%Y-%m-%dT%H%M%S)" - -HOSTS=() -while read -r host; do - [[ -z "$host" || "$host" =~ ^# ]] && continue - HOSTS+=("$host") -done < "$HOSTS_FILE" - -echo "Backing up hosts:" -printf ' - %s\n' "${HOSTS[@]}" - -FAILED_HOSTS=() - -for HOST in "${HOSTS[@]}"; do - ARCHIVE="${HOST}-backup-${TIMESTAMP}" - MOUNT_DIR="${MOUNT_BASE}/${HOST}" - echo "--- Backing up $HOST ---" - - mkdir -p "$MOUNT_DIR" - - # Pull mode: mount client's /BACKUP locally via SSHFS - if ! sshfs "${HOST}:/BACKUP" "$MOUNT_DIR" \ - -o BatchMode=yes,reconnect,follow_symlinks,ServerAliveInterval=15,ServerAliveCountMax=3; then - echo "WARNING: Failed to mount $HOST:/BACKUP via SSHFS" - FAILED_HOSTS+=("$HOST") - rmdir "$MOUNT_DIR" - continue - fi - - # SSHFS (FUSE/SFTP) does not guarantee stable inode numbers, - # so instruct borg to use ctime+size for file change detection instead. - if ! borg create \ - "$REPO::$ARCHIVE" \ - "$MOUNT_DIR" \ - --pattern "+ sh:**/current*" \ - --pattern "- *" \ - --files-cache ctime,size \ - --stats \ - --compression lz4; then - - echo "WARNING: Failed to back up $HOST" - FAILED_HOSTS+=("$HOST") - fi - - # Unmount and clean up regardless of borg exit status - umount "$MOUNT_DIR" - rmdir "$MOUNT_DIR" -done - -rmdir "$MOUNT_BASE" 2>/dev/null || true - -echo "Applying retention policy..." - -for HOST in "${HOSTS[@]}"; do - borg prune \ - "$REPO" \ - --keep-daily=7 \ - --keep-weekly=8 \ - --glob-archives "${HOST}-backup-*" \ - --stats -done - -if [[ ${#FAILED_HOSTS[@]} -gt 0 ]]; then - echo "DONE WITH ERRORS:" - printf ' - %s\n' "${FAILED_HOSTS[@]}" - exit 1 -fi - -echo "Done: all hosts backed up at $TIMESTAMP" diff --git a/app/backup_prune b/app/backup_prune new file mode 100755 index 0000000..79cc008 --- /dev/null +++ b/app/backup_prune @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +export BORG_REPO="ssh://e7e9h45y@e7e9h45y.repo.borgbase.com/./repo" +export BORG_RSH="ssh -i ~/.ssh/borg-backup" + +echo "Applying retention policy..." + +borg prune \ + --keep-daily=7 \ + --keep-weekly=8 \ + --keep-monthly=12 \ + --stats + +echo "Done: pruning complete" diff --git a/docker-compose.yaml b/docker-compose.yaml index 80c1901..ff99ace 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,7 +5,6 @@ services: volumes: - ./app:/app - ./exchange:/app/exchange - - ./backup:/backup tty: true privileged: true extra_hosts: