backup_git.bracken.jp.sh (1093B)
1 #!/bin/sh 2 3 TAG=$1 4 RETAIN_COUNT=$2 5 6 # Check script arguments. 7 if [ -z "$TAG" -o -z "$RETAIN_COUNT" ]; then 8 echo "usage: $0 BACKUP_TAG RETAIN_COUNT" 9 exit 1 10 fi 11 12 USER=git 13 HOST=git.bracken.jp 14 BACKUP_SRC_DIR="/home/git" 15 BACKUP_SRC_FILES='*.git git_infra' 16 BACKUP_OUT_DIR="/volume1/Backups/git.bracken.jp/$TAG" 17 BACKUP_OUT_FILE="$(date +"%Y-%m-%d_%H.%m").txz" 18 19 # Create the new backup. 20 echo "[git backup] Backup of $HOST:$BACKUP_SRC_DIR ($TAG) starting" 21 echo "[git backup] Backing up files: $BACKUP_SRC_FILES" 22 mkdir -p "$BACKUP_OUT_DIR" 23 ssh $USER@$HOST \ 24 tar Jcf - -C "$BACKUP_SRC_DIR" "$BACKUP_SRC_FILES" \ 25 > "$BACKUP_OUT_DIR/$BACKUP_OUT_FILE" 26 echo "[git backup] Wrote archive $BACKUP_OUT_DIR/$BACKUP_OUT_FILE" 27 28 # Delete archives past the retain count. 29 EXPIRED_ARCHIVES="$(find "$BACKUP_OUT_DIR" -maxdepth 1 -type f \ 30 | sort -r | tail -n +$(($RETAIN_COUNT + 1)))" 31 for f in $EXPIRED_ARCHIVES; do 32 echo "[git backup] Deleting expired archive: $f" 33 rm -f "$f" 34 done 35 36 echo "[git backup] Backup of $HOST:$BACKUP_SRC_DIR ($TAG) complete"