this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

:sparkles: backup script with borg and rclone

+55
+55
backup_plan.sh
··· 1 + #!/bin/bash 2 + 3 + # a script that creates daily backup and saves it to google drive 4 + # in case i forgot how to set up again, here's the post 5 + # https://kernova.io/blog/secure-and-automated-backups-with-borg-and-rclone/ 6 + 7 + # Stop script on any error 8 + set -e 9 + set -o pipefail 10 + 11 + # Configuration 12 + BORG_REPO=/external-hd-backup/borgbackup 13 + export BORG_PASSPHRASE=$(cat /root/.borg_passphrase) 14 + 15 + RCLONE_REMOTE="Google drive" 16 + RCLONE_DESTINATION="rasp" 17 + 18 + TIMESTAMP=$(date +%Y-%m-%d-%H%M%S) 19 + 20 + SOFT_SERVE_DIR=/external-hd-backup/soft-serve/ 21 + VAULTWARDEN_DIR=/external-hd-backup/vaultwarden-data/ 22 + 23 + log() { 24 + echo "$(date "+%Y-%m-%d %H:%M:%S") - $1" 25 + } 26 + 27 + log "--- Starting daily backup ---" 28 + 29 + # 1. Create a backup of soft-serve application 30 + log "Step 1: Backing up soft-serve..." 31 + BORG_SOFT_SERVE_NAME="soft-serve-$TIMESTAMP" 32 + borg create --stats --progress \ 33 + -C zstd,6 \ 34 + "$BORG_REPO::$BORG_SOFT_SERVE_NAME" \ 35 + "$SOFT_SERVE_DIR" 36 + log "Borg backup created: $BORG_SOFT_SERVE_NAME" 37 + 38 + # 2. Create a backup of vaultwarden application 39 + log "Step 2: Backing up vaultwarden..." 40 + BORG_VAULTWARDEN_NAME="vaultwarden-$TIMESTAMP" 41 + borg create --stats --progress \ 42 + -C zstd,6 \ 43 + "$BORG_REPO::$BORG_VAULTWARDEN_NAME" \ 44 + "$VAULTWARDEN_DIR" 45 + log "Borg backup created: $BORG_VAULTWARDEN_NAME" 46 + 47 + # 3. Sync borg repository to the rclone remote 48 + log "Step 3: Syncing repository to rclone remote..." 49 + rclone sync "$BORG_REPO" "$RCLONE_REMOTE":$RCLONE_DESTINATION --progress 50 + log "Sync complete" 51 + 52 + log "--- Daily backup finished successfully ---" 53 + 54 + exit 0 55 +