FTPRemoteSync
Un backup incrementale su Raspberry Pi che, ogni notte, scarica da un NAS remoto (esposto via FTP) solo i file cambiati e li archivia su un NAS locale.
L’obiettivo
Tenere una copia di sicurezza dei dati di un NAS che si trova in un’altra sede, salvandoli automaticamente su un NAS locale. L’idea è avere un backup off-site senza intervento manuale, trasferendo ogni volta soltanto ciò che è effettivamente cambiato.
Come funziona
Un piccolo Raspberry Pi fa da tramite fra i due NAS:
- Monta il NAS locale (via CIFS/SMB o NFS) come una cartella di sistema.
- Si collega al NAS remoto via FTP e, con
lftp mirror, scarica solo i file nuovi o modificati dall’ultima esecuzione (--only-newer), in parallelo. - Gira ogni notte via cron e scrive un log per ogni esecuzione, con rotazione automatica.
Il NAS remoto si trova dietro una connessione domestica senza IP pubblico raggiungibile: le due sedi sono collegate da una VPN site-to-site privata, così il Pi può raggiungerlo come se fosse in rete locale.
Configurazione
Tutto il comportamento vive in un unico file JSON: l’elenco delle cartelle da
copiare (ogni voce mappa un percorso remoto su uno locale), il numero di trasferimenti
in parallelo e i giorni di conservazione dei log. Le credenziali di NAS e FTP stanno in
file separati, leggibili solo da root (permessi 600), fuori dalla configurazione.
Scelte di progetto
- Incrementale davvero:
lftpconfronta i timestamp e salta ciò che è già aggiornato — dopo la prima copia, ogni notte si muove pochissimo. - Robustezza al boot: il mount del NAS locale usa
_netdevenofail, così il Pi si avvia anche se il NAS è momentaneamente offline. - Trasferimenti paralleli calibrati per un Pi 3 (con la possibilità di abbassarli se fatica).
- Dry-run per verificare i percorsi prima di una copia reale, e logrotate che tiene ~15 giorni di log compressi.
Stack
Raspberry Pi · Bash · lftp · cron · CIFS/NFS · logrotate · jq