# ============================================================ # INSTALLAZIONE BACKUP AUTOMATICO GITEA (da eseguire da ROOT) # Incolla tutto questo blocco nel terminale root del VPS. # ============================================================ # 1) Crea la directory backup mkdir -p /var/backups/gitea # 2) Scrivi lo script di backup in /usr/local/sbin (autosufficiente) cat > /usr/local/sbin/backup_gitea.sh <<'EOF' #!/bin/bash # Backup automatico Gitea via `gitea dump` (db sqlite + repos + config in un unico zip). # Retention: 14 giorni (modificare KEEP_DAYS). set -euo pipefail BACKUP_DIR=/var/backups/gitea KEEP_DAYS=14 STAMP=$(date +%Y%m%d-%H%M%S) ARC="$BACKUP_DIR/gitea-dump-$STAMP.zip" mkdir -p "$BACKUP_DIR" # Esegue il dump come utente 'gitea' (stesso user del servizio) su -s /bin/bash gitea -c \ "/usr/local/bin/gitea dump --config /etc/gitea/app.ini --file '$ARC' --type zip" \ >/tmp/gitea-dump.log 2>&1 if [ ! -s "$ARC" ]; then echo "ERRORE: dump non creato" >>/tmp/gitea-dump.log exit 1 fi # Pulisce i dump piu' vecchi di KEEP_DAYS find "$BACKUP_DIR" -name 'gitea-dump-*.zip' -mtime +"$KEEP_DAYS" -delete echo "OK: $ARC ($(du -h "$ARC" | cut -f1))" EOF chmod 0755 /usr/local/sbin/backup_gitea.sh # 3) TEST: esegui un backup manuale adesso /usr/local/sbin/backup_gitea.sh ls -lh /var/backups/gitea/ # 4) Installa il cron giornaliero alle 02:30 via /etc/cron.d cat > /etc/cron.d/gitea-backup <<'CRON' # Backup giornaliero Gitea alle 02:30, stdout/stderr su log 30 2 * * * root /usr/local/sbin/backup_gitea.sh >>/tmp/gitea-dump.log 2>&1 CRON chmod 0644 /etc/cron.d/gitea-backup # 5) Verifica echo "--- cron installato ---" ls -l /etc/cron.d/gitea-backup echo "--- contenuto ---" cat /etc/cron.d/gitea-backup echo "--- sistema crontab attivo? ---" systemctl is-active cron 2>/dev/null || service cron status 2>/dev/null | head -2 || echo "cron non attivo (verificare)" echo "--- ultimo backup (zona) ---" ls -lh /var/backups/gitea/