git_infra

Git infra scripts for git.bracken.jp
git clone https://git.bracken.jp/git_infra.git
Log | Files | Refs | LICENSE

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"