File: //tmp/backup.sh
#!/bin/bash
# CONFIG
MOUNT_DIR="/mnt/backup"
REMOTE="root@46.141.105.7:/media/root/6575a881-3a86-4c99-9b6d-1f8eb8b38ed1/Server2022"
PORT="2096"
EMAIL="report@navarrosistemi.it"
TMP_LOG="/tmp/backup_report.html"
DATA=$(date +%Y%m%d)
ICON_CHECK="โ
"
ICON_FAIL="โ"
# Inizio HTML
echo "<html><body style='font-family: Arial'>" > "$TMP_LOG"
echo "<h2>๐๏ธ Report Backup $DATA</h2><ul>" >> "$TMP_LOG"
# Smonta solo se giร montato
if mountpoint -q "$MOUNT_DIR"; then
echo "<li>๐ Smontaggio vecchio SSHFS: $ICON_CHECK</li>" >> "$TMP_LOG"
fusermount -u -z "$MOUNT_DIR" || umount -l "$MOUNT_DIR"
else
echo "<li>๐ Nessun mount precedente da smontare</li>" >> "$TMP_LOG"
fi
# Mount SSHFS
if sshfs -p "$PORT" -o allow_other,default_permissions,nonempty "$REMOTE" "$MOUNT_DIR"; then
echo "<li>๐ Montaggio SSHFS: $ICON_CHECK</li>" >> "$TMP_LOG"
else
echo "<li>๐ Montaggio SSHFS: $ICON_FAIL</li>" >> "$TMP_LOG"
echo "</ul><p>โ Backup interrotto.</p></body></html>" >> "$TMP_LOG"
mail -a "Content-Type: text/html" -s "โ Backup Fallito" "$EMAIL" < "$TMP_LOG"
exit 1
fi
# Lista cartelle da backuppare
declare -A BACKUP_LIST=(
[airpro]="/var/www/airpro"
[magobridge]="/var/www/magobridge"
[lab2punto0]="/var/www/lab2punto0"
[watchpassion]="/var/www/watchpassion"
[ajlw]="/var/www/ajlw"
[idelimpianti]="/var/www/idelimpianti"
[lavorazionemarmi]="/var/www/lavorazionemarmi"
[oroline]="/var/www/oroline"
[orologipreziosi]="/var/www/orologipreziosi"
[veronasociale]="/var/www/veronasociale"
[navarrosistemi]="/home/navarrosistemi"
[afadcavo]="/var/www/afadcavo"
[afadcavo]="/var/www/acquaapendown"
[crm01]="/var/www/crm01"
[acetificio]="/var/www/acetificio"
[magobridge]="/var/www/magobridge"
[roncasposi]="/var/www/roncasposi"
[idelimpiantisrl]="/var/www/idelimpiantisrl"
)
# Backup
for name in "${!BACKUP_LIST[@]}"; do
src="${BACKUP_LIST[$name]}"
dest="$MOUNT_DIR/${name}-${DATA}.zip"
if zip -r "$dest" "$src" > /dev/null 2>&1; then
echo "<li>๐ฆ Backup <b>$name</b>: $ICON_CHECK</li>" >> "$TMP_LOG"
else
echo "<li>๐ฆ Backup <b>$name</b>: $ICON_FAIL</li>" >> "$TMP_LOG"
fi
done
# Pulizia vecchi backup
find "$MOUNT_DIR"/* -mtime +2 -exec rm -f {} \;
echo "<li>๐งน Pulizia vecchi file (>2 giorni): $ICON_CHECK</li>" >> "$TMP_LOG"
# Fine HTML
echo "</ul><p>๐ Fine backup: $(date)</p></body></html>" >> "$TMP_LOG"
# Invia email con report
mail -a "Content-Type: text/html" -s "โ
Report Backup $DATA" "$EMAIL" < "$TMP_LOG"