← 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