Backup via ftp con rsync e curlftpfs

Volete avere un backup sempre aggiornato del contenuto del vostro sito Internet, disponendo solo di un accesso FTP e consumando meno banda possibile? Avete uno storage remoto condiviso tra piu’ computer da mantenere sincronizzato?

Due strumenti per risolvere questo genere di problemi: curlftpfs e rsync. Il primo e’ un modolo FUSE per montare un indirizzo FTP come se fosse una normale directory del nostro spazio disco. Il secondo un programma che sincronizza file e directory in locale, via rsh e via ssh. Combinando la capacita’ di fare mirror tra risorse locali di rsync e quella di curlftpfs di montare un indirizzo FTP come risorsa locale, il gioco è presto fatto.

Entrambi sono presenti come pacchetti nei repository ufficiali di Ubuntu e altre Debian like, quindi per la loro installazione basta un sudo apt-get install curlftpfs rsync.

Ora la parte difficile. Monto il mio sito ftp:

curlftpfs -o "user:pwd" ftp.rainbowbreeze.it /mnt/rainbowbreeze.it

e poi ne faccio un mirror in locale, trasferendo soltanto i cambiamenti dall’ultimo mirror e cancellando file locali eventualmente non più esistenti in remoto:

rsync -azvv --delete /mnt/rainbowbreeze.it/ /opt/backup/rainbowbreeze.it/

Beh, da qui in poi e’ solo una questione di fantasia, e un sistemista GNU/Linux ne davvero tanta per definizione, dato che con tutte le potenzialità di questo sistema operativo, non puo’ che tenerla costantementei in allenamento Cool

Iniziamo col montare la nostra risorsa FTP all’avvio, aggiungendo alla fine del file /etc/fstab la seguente riga:


curlftpfs#user:pwd@ftp.rainbowbreeze.it /mnt/rainbowbreeze.it fuse rw,uid=500,user,noauto,allow_other 0 0 

se non si vuole mettere in chiaro username e password, si puo’ sempre creare il file /root/.netrc, con a sintassi spiegata nelle FAQ sul sito di curlftpfs e mettere li dentro le credenziali di accesso.

A questo punto, basta anche un cronjob per eseguire, grazie ad rsync, il mirror costante del sito in locale.

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.

Non avete un sito ftp da usare come storage remoto?  Diciamo che non ci credo, poi comunque gmailfs che esiste a fare?

Annunci

12 pensieri su “Backup via ftp con rsync e curlftpfs

  1. Andrea

    senti ma sei sicuro di
    rsync -azvv –delete /mnt/rainbowbreeze.it/ /opt/backup/rainbowbreeze.it/
    perchè sulla mia ubuntu ha cominciato a CANCELLARE il contenuto del secondo pathname (cazzo)
    fortuna che prima del backup mi son fatto un backup

    Mi piace

    Rispondi
  2. rainbowbreeze Autore articolo

    sicurissimo… l’opzione –delete serve appunto per questo, per cancellare tutto quello che c’e’ di diverso nel secondo pathname rispetto a quello che c’e’ nel primo, in modo da avere un mirror preciso…

    Mi piace

    Rispondi
  3. ilvio

    Ho provato questa procedura, ma quando apro la cartella mi da un errore di ftp non trovato:

    curlftpfs#utente:password@ftp.dominio.com /media/nome-cartella fuse rw,uid=500,user,noauto,allow_other 0 0

    Nel mio caso:

    curlftpfs#nome:password@ftp://192.168.1.2 /media/ftp fuse rw,uid=500,user,noauto,allow_other 0 0

    o provato anche con:

    curlftpfs#nome:password@ftp://192.168.1.2 /media/ftp fuse rw,uid=1000,gid=1000,user,noauto,allow_other 0 0

    grazie

    Mi piace

    Rispondi
  4. rainbowbreeze Autore articolo

    potrebbe essere che versione dopo versione il programma abbia cambiato la sua sintassi…

    io comunque, quando lo usavo, garantisco che con la sintassi che ho scritto nel mio post tutto andava!

    Mi piace

    Rispondi
  5. Pingback: FerraraDevelop » Backup via ftp con rsync e curlftpfs

  6. stef@no

    spero tu legga ancora i commenti a questo post che sono un pò datati.
    Sono incappato in un piccolo problema: se i dati da copiare risiedono su una macchina occasionalmente spenta o che non viene vista per problemi di rete, rsync non si ferma (ovviamente): la cartella locale di collegamnto è vuota ed il risultato è la cancellazione di tutto il backup che non è seguita dalla nuova copia.
    Come se ne esce?

    Mi piace

    Rispondi
    1. rainbowbreeze Autore articolo

      Con un bel controllo sull’esistenza di un file di flag prima di lanciare rsync 😉
      il file risiede su server, quindi se esiste significa che il server e’ connesso, altrimenti esci dallo script, ritenti piu’ tardi, fai altro…

      Mi piace

      Rispondi
  7. stef@no

    grazie infinite, soprattutto per la celerità.
    mi pare però di non trovare quest’opzione tra quelle di rsync ed evidentemente mi perdo qualcosa. Potresti specificare meglio la procedura?
    Grazie ancora

    Mi piace

    Rispondi
  8. Giovanni ~ Quacos

    Sembra che al giorno d’oggi non sia possibile indicare a rsync il proprietario a cui assegnare i nuovi file creati nella destinazione. Riesco a fare in modo che ai file esistenti non venga cambiato utente e gruppo grazie ad –no-user e –no-group, però per il resto questa che tu hai indicato mi sembra la soluzione migliore.

    Mi piace

    Rispondi

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

This site uses Akismet to reduce spam. Learn how your comment data is processed.