rsync -azvv --delete /media/nomesito.ext/ /opt/backup/nomesito.ext/
Ora il più è fatto, infatti una volta lanciato il comando si vedranno su terminale tutti i file che vengono copiati in locale e avremo una copia del sito sincronizzata esattamente con lo spazio web di cui abbiamo fatto il mirror.
Se cambiamo qualcosa sul sito, facendo di nuovo rsync, tutti i cambiamenti verranno implementati nella copia locale.
Potremmo anche creare uno script che automatizza il tutto. Io ne ho creato uno ad hoc per il mio sistema e funziona benissimo e permette di salvare i log di tutti i file copiati o modificati direttamente in un file di testo.
dunque creiamo lo script così:
#vi backupftp.sh
con dentro:
#!/bin/sh DAY=$(/bin/date +%u) echo "MI ASSICURO CHE ESISTA LA CARTELLA COME PUNTO DI MOUNT /media/filippoaceto.it"; if [ ! -d /media/filippoaceto.it ]; then mkdir /media/filippoaceto.it 2>/dev/null fi echo "VERIFICO SE HO MONTATO IL SITO FTP IN CASO CONTRARIO LO MONTO"; if mount | grep ftp.filippoaceto.it > /dev/null; then echo "VOLUME MONTATO" else curlftpfs ftp://userftp:password@ftp.filippoaceto.it /media/filippoaceto.it fi echo "MI ASSICURO CHE ESISTA LA CARTELLA DOVE EFFETTUARE IL BACKUP IN /opt/backup/filippoaceto.it"; if [ ! -d /opt/backup/filippoaceto.it ]; then mkdir /opt/backup/filippoaceto.it 2>/dev/null fi echo "MI ASSICURO CHE ESISTA LA CARTELLA DOVE EFFETTUARE IL LOG DEL BACKUP IN /opt/backup/filippoaceto.it/log"; if [ ! -d /opt/backup/filippoaceto.it/log ]; then mkdir /opt/backup/filippoaceto.it/log 2>/dev/null fi echo "VERIFICO mount TRAMITE PRESENZA DELLA CARTELLA /media/filippoaceto.it/www.filippoaceto.it" if [ ! -d /media/filippoaceto.it/www.filippoaceto.it ]; then echo "MOUNT ERRATO, BACKUP ANNULLATO"; exit else if [ $DAY -eq 6 ]; then echo "ESEGUO BACKUP con SINCRONIA se SABATO" /usr/bin/rsync -va --delete /media/filippoaceto.it/ /opt/backup/filippoaceto.it --log-file=/opt/backup/filippoaceto.it/log/backupsincronia_$(date +\%Y\%m\%d).txt else echo "ESEGUO BACKUP INCREMENTALE" /usr/bin/rsync -va /media/filippoaceto.it/ /opt/backup/filippoaceto.it --log-file=/opt/backup/filippoaceto.it/log/backup_$(date +\%Y\%m\%d).txt fi if mount | grep ftp.filippoaceto.it > /dev/null; then echo "SMONTO VOLUME DI RETE" /bin/umount /media/filippoaceto.it fi fi
per salvare il file shift + zz
Avviando questo script si crea sul mio sistema la cartella /opt/backup/filippoaceto.it che contiene esattamente in locale ciò che è sul sito ftp.
quindi prima rendiamolo eseguibile:
# chmod +x backupftp.sh
e poi avviamolo:
# ./backupftp.sh
Potremmo ora montare magari il nostro sito ftp all’avvio del sistema e far si che questo script, oppure direttamente il comando curlftpfs vengano eseguiti a cadenze regolari.
Modifichiamo il file /etc/fstab:
curlftpfs#userftp:passwordftp@ftp.nomesito.ext /media/nomesito.ext fuse allow_other,ro,user,auto,_netdev 0 0
è importante l’opzione “_netdev” che richiede che il collegamento ad internet sia disponibile prima di montare lo spazio.
Se lo omettessimo il sistema non si avvierebbe non riuscendo a montare l’ftp in quanto la rete, al momento del montaggio, non sarebbe ancora disponibile.
Poi per schedulare i backup possiamo usare crontab
Dando da terminale:
$ crontab-e
inseriamo la seguente riga:
00 21 * * * /root/backupftp.sh
per salvare il file shift + zz
Con questa sintassi abbiamo detto allo schedulatore cron di avviare lo script alle 21, ogni giorno.
Se poi volete gestire uno storage remoto tenendolo sincronizzato tra più pc, allora basta fare un primo mirror dallo storage verso il vostro pc, e poi dal pc verso lo storage ogni volta che modificate la copia dei contenuti sul vostro pc.