33800 Docs

← Retour
#!/bin/bash # Sync GitLab backups vers O2switch # Cron: 30 */6 * * * (30min après le backup GitLab) set -e LOG="/var/log/o2switch-sync.log" O2_HOST="o2switch" O2_PATH="backup/gitlab" GITLAB_HOST="gouroubleu@192.168.1.196" GITLAB_BACKUP_DIR="/mnt/gitlab-nfs/backups" echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting GitLab backup sync..." >> $LOG # Récupérer le dernier backup GitLab (nécessite sudo) LATEST=$(ssh $GITLAB_HOST "sudo bash -c 'ls -t $GITLAB_BACKUP_DIR/*_gitlab_backup.tar 2>/dev/null | head -1'") if [ -z "$LATEST" ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARNING: No GitLab backup found" >> $LOG exit 0 fi FILENAME=$(basename "$LATEST") # Vérifier si ce backup existe déjà sur O2switch EXISTS=$(ssh $O2_HOST "ls ~/$O2_PATH/$FILENAME 2>/dev/null" || echo "") if [ -n "$EXISTS" ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] GitLab backup already synced: $FILENAME" >> $LOG exit 0 fi # Copier vers PVE puis vers O2switch echo "[$(date '+%Y-%m-%d %H:%M:%S')] Syncing: $FILENAME" >> $LOG # Copier via /tmp sur GitLab (évite problème permissions) ssh $GITLAB_HOST "sudo cp $LATEST /tmp/$FILENAME && sudo chown gouroubleu:gouroubleu /tmp/$FILENAME" scp -q $GITLAB_HOST:/tmp/$FILENAME /tmp/$FILENAME ssh $GITLAB_HOST "rm -f /tmp/$FILENAME" scp -q /tmp/$FILENAME $O2_HOST:~/$O2_PATH/ rm -f /tmp/$FILENAME # Garder 7 derniers backups sur O2switch (1 semaine) ssh $O2_HOST "cd ~/$O2_PATH && ls -t *_gitlab_backup.tar 2>/dev/null | tail -n +8 | xargs -r rm" SIZE=$(ssh $O2_HOST "ls -lh ~/$O2_PATH/$FILENAME | awk '{print \$5}'") echo "[$(date '+%Y-%m-%d %H:%M:%S')] GitLab backup synced: $FILENAME ($SIZE)" >> $LOG