Anche se esistono metodi certamente più ortodossi, ricorrere al vecchio e deprecabile protocollo FTP per mantenere la sincronizzazione tra directory collocate su due server a volte è semplicemente l’unica soluzione. Mi riferisco a situazioni in cui il cliente chiede il backup giornaliero di una vecchia applicazione che risiede su di un server a cui è possibile accedere – per motivi insondabili – solo ed esclusivamente mediante FTP.
Detto tra noi: il cliente non ha quasi mai ragione, e lo dico per esperienza: lui guarda le cose da una prospettiva quasi sempre conservativa, anche e soprattutto quando le cose non vanno per niente bene. La filosofia del cliente tipo è molto spesso la seguente: ha sempre funzionato, quindi funzionerà per sempre. O, peggio: ha sempre funzionato male, ma ha sempre funzionato, quindi funzionerà male ma funzionerà per sempre. Un sillogismo agghiacciante…
Quindi in questo pomeriggio grigio di inizio autunno mi sono messo a lavorare sul server di un cliente che – udite udite! – per motivi di certificazione deve essere backuppato remotamente almeno una volta al giorno. Il sistemista responsabile del server – in realtà un dipendente che si occupa di tutt’altro e che ha sempre avuto il pallino dell’informatica – non ha voluto sentire ragione e mi ha fornito hostname, username, directory e password per l’accesso FTP.
Come sempre l’esperienza – e un disco di backup infarcito di appunti e script – ti vengono in soccorso in questo genere di situazioni. Ricordavo infatti un vecchio progetto che per anni ha portato avanti lo sviluppo di un programmino che fa proprio quello che mi serve. Si tratta di ftpsync.pl, uno script in Perl che, con mio sommo piacere, vedo essere tutt’ora portato avanti. La home page del progetto è la seguente:
https://sourceforge.net/projects/ftpsync/
Vi invito a scaricare questo semplice ma efficacissimo script e a valutarne l’impiego in situazioni anche meno banali: dato che si fonda completamente su Perl, può rivelarsi utilissimo ad esempio nella sincronizzazione di microserver Linux, anche e soprattutto perché lavorano su di una porta e con un protocollo che quasi sempre non subisce impedimenti da parte dei firewall.
Ed ecco come ho ottenuto la benedetta sincronizzazione della directory messa a disposizione dal mio cliente su uno dei miei server Linux:
./ftpsync.pl -gdv ftpserver=ftp.nomedominio.it ftpdir=/directory
ftpuser=nomeutente ftppasswd=password /home/utentelocale/backup
Il comando che vedete viene lanciato una volta al giorno mediante cron. Cool!
Attenzione!!! Mi avete già segnalato difficoltà che dipendono solo dal fatto di non avere letto con attenzione la doc. Ci sono moduli del Perl necessari per il corretto funzionamento che vanno installati prima di eseguire lo script. Con CPAN, seguite la solita procedura.
perl -MCPAN -e shell
[...]
cpan[1]> install File::Find
[...]
cpan[2]> IO::Handle
[...]
cpan[3]> install Net::FTP
[...]
cpan[4]> install File::Listing
[...]