← Retour
#!/bin/bash
# Sync des logs centralises /logs/devia vers O2switch (archivage cold storage)
# 2026-07-12 : re-pointe de Loki (192.168.1.12, mort — 0 export depuis juillet) vers /logs/devia
# (depot quotidien du relais logs : docker coeur + exports db, pousse ~08h30 depuis VM201)
# Cron: 0 3 * * * gouroubleu (inchange) — ancien script Loki : sync-logs-o2switch.sh.bak-loki
set -e
SRC="/logs/devia"
O2SWITCH="o2switch"
REMOTE_DIR="backup/logs/devia"
LOG_FILE="/var/log/sync-logs-o2switch.log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
log "=== Debut sync $SRC vers O2switch ==="
# Garde-fou : si le dataset zfs n'est pas monte, ne rien faire et le dire
if [ ! -d "$SRC/docker" ] && [ ! -d "$SRC/db" ]; then
log "!! Source $SRC vide ou non montee (dataset nvme-solo/logs/devia ?) — abandon"
exit 1
fi
ssh -o ConnectTimeout=10 "$O2SWITCH" "mkdir -p ~/$REMOTE_DIR" 2>/dev/null || true
# Pas de --delete : o2switch garde l'historique meme si le local est purge un jour
STATS=$(rsync -az --stats "$SRC/" "$O2SWITCH:~/$REMOTE_DIR/" 2>&1 | grep -E "Number of created files|Number of regular files transferred|Total transferred file size" | tr '\n' ' ')
log "rsync OK: $STATS"
# Retention 90 jours sur O2switch
log "Nettoyage logs > 90 jours sur O2switch..."
ssh -o ConnectTimeout=10 "$O2SWITCH" "find ~/$REMOTE_DIR -type f -mtime +90 -delete 2>/dev/null" || true
log "=== Fin sync logs ==="
# Meta pour logs.internal : manifest local + log de sync pousses sur o2switch
META_DIR="/tmp/logs-meta-$$"
mkdir -p "$META_DIR"
( cd "$SRC" && find . -type f -printf "%P\t%s\t%TY-%Tm-%TdT%TH:%TM:%TS\n" | sort ) > "$META_DIR/manifest-local.tsv"
df -B1 --output=size,used,avail "$SRC" | tail -1 | awk "{print \"size_bytes=\"\$1\"\nused_bytes=\"\$2\"\navail_bytes=\"\$3}" > "$META_DIR/depot-local.txt"
date "+last_sync=%Y-%m-%dT%H:%M:%S" >> "$META_DIR/depot-local.txt"
cp "$LOG_FILE" "$META_DIR/sync.log" 2>/dev/null || true
ssh -o ConnectTimeout=10 "$O2SWITCH" "mkdir -p ~/$REMOTE_DIR/_meta" 2>/dev/null || true
rsync -az "$META_DIR/" "$O2SWITCH:~/$REMOTE_DIR/_meta/" && log "meta OK (manifest+sync.log)"
rm -rf "$META_DIR"