Utilizzare LFTP per fare un mirroring delle directory con un account FTP
Posted by xer su 25 gennaio 2010
“lftp” è un client ftp che può essere utilizzato per sincronizzare directory di dati con un account ftp remoto.
Ipotizziamo di avere dei dati sulla nostra Linux Box firewall o server di dati locale e vogliamo eseguire un backup dei nostri dati, oppure vogliamo sincronizzare la directory dati con la directory del nostro server web in hosting presso un altro provider, o meglio ancora, ipotizziamo di avere dei dati sulla nostra Linux Box che utilizziamo tutti i giorni, ma che nottetempo, questi dati devono essere sincronizzati e pubblicati con il nostro server web remoto per renderli dispnibili tramite http.
Ebbene, lftp fa al caso nostro!
Per installare lftp, basta eseguire “apt-get install lftp“.
Il metodo migliore per utilizzarlo è di creare uno script nel quale scrivere i parametri di accesso, questo per facilitare l’esecuzione del backup e/o mirror senza dovere ogni volta digitare gli stessi comandi, ma perlopiù per potere inserire tale script come “cron job” e farlo eseguire sistematicamente.
Creiamo uno script per il download dei dati:
Eseguiamo il nostro editor preferito ed immettiamo i dati necessari e lo salviamo con il nome “download”:
open -u user,password -p [port] [server]
mirror -c -e /directory_remota /directory_locale
exit
user= è il login ftp del vostro server web o server ftp remoto, per accessi con username particolari come ad esempio un account di aruba, il quale è uno dei pochi provider che vendono hosting con spazio web illimitato, utilizzare l’username con gli apici come segue:
open -u ‘132345@aruba.it’,password -p [port] [server]
mirror -c -e /directory_remota /directory_locale
exit
password= è la password del vostro account
[port]= è la porta del servizio ftp (21 di default)
[server]= è l’indirizzo host del vostro account (es. ftp://miodominio.com, può essere utilizzato anche sftp://)
/directory_remota= è la directory remota del vostro server web e/o ftp
/directory_locale= è la directory della vostra Linux Box
Utilizzare il percorso “completo” sia per la directory remota che per quella locale.
L’opzione “-e” significa che se nella directory remota un detto file non esiste più, verrà cancellato anche nella directory locale, questo ovviamente per sincronizzare perfettamente entrambe le directory, volendo, tale parametro può essere omesso.
Salviamo il nostro script, come detto con il nome “download”.
Creiamo adesso uno script per l’upload dei dati:
Eseguiamo ancora una volta il nostro editor preferito (nano) immettiamo i dati necessari e lo salviamo con il nome “upload”:
open -u user,password -p [port] [server]
mirror -c -e -R /directory_locale /directory_remota
exit
Salviamo il nostro script, come detto con il nome “upload”.
A prima occhiata, sembra che il nostro script “upload” non sia diverso dal precedente, in realtà esiste un parametro in più:
“-R” e le directory invece sono invertite.
Il parametro -R indica che vogliamo fare upload dei dati dalla directory locale verso un percorso remoto.
lftp ha molti parametri, per approfondire, “man lftp”.
Creati due script downlod e upload non ci resta che eseguirli.
Se volessimo fare il download dal nostro server web/ftp remoto, eseguiamo:
# lftp -f download
Se invece volessimo fare un upload dei dati sul server web/ftp remoto, eseguiamo:
# lftp -f upload
Semplicissimo e molto funzionale.
giuliano said
bellissimo,ottimo ha un solo problema che non riesco a correggere nel fare l’upload che è quello che serve a me visto che lo utilizzo come sorta di backup,su determinati nomi di file (ad esempio se hanno l’accento) non vengono trasferiti.
questo è l’output:
giuliano@desktop:~$ lftp -f /home/giuliano/script/lftpdocumenti.sh
mirror: Access failed: 550 Requested action not taken. (05 altra metà.MP3)
xer said
Giuliano, prova ad utilizzare un charset utf8…
giuliano said
cioè,dimmi come fare per favore,sono alle prime armi di linux.ciao e complimenti ancora.
xer said
Ciao
Se hai creato degli script come ho consigliato, i quali vengono richiamati dal comando “lftp”, prova ad inserire queste due righe:
In realtà non se se questo charset va bene al caso tuo, si dovrebbe fare un troubleshooting da comando manuale, leggere il “man” del comando (da console digita “man lftp”), non fa mai male. ;-P
masavini said
ciao,
fino a poco tempo non avevo problemi ad accedere al mio spazio ftp su aruba con lftp.
possibile che da qualche giorno (settimana?) non riesca più a fare il login?
ho aperto un ticket con l’assistenza, ma mi dicono che non è cambiato nulla… tu riesci ancora a usare lftp con aruba?
matteo
xer said
@Matteo
L’unico problema che mi ha dato aruba è il “login” che deve essere necessariamente incapsulato tra due apici, purtroppo però ho chiuso l’account aruba e non posso provare, mi dispiace.
Se sicuro di avere impostato la modalità passiva?
Roberto said
Prova ad usare le virgolette per racchiudere il nome del file oppure prova ad usare nomi di file senza spazi.
Rene' said
Ciao ti scrivo perchè ho visto questo articolo ed è quello che mi ha aiutato di più e assomiglia di più a quello che ho bisogno di fare…
1: Sono un baby pinguino dopo 20 anni tra dos e win sono passato a Ubuntu…quindi sbabbo anche se mi sto documentando…
2: Devo fare una serie di upload consistenti da un vecchio portatile sul quale ho faticosamente installato (cdrom rotto..usb non riconosciuto all’avvio) la distro DSL……e ho scoperto che il client ftp che riprende l’upload anche se cade la connessione è lftp….tutto linea di comando…ok partiamo con i dubbi:
– Nell’articolo parli di script…quindi devo salvarlo con estensione .sh?
Questo è il mio script:
open -u renes@xxxxx.it,xxxxxx -p [21] [ftp.eu.filesonic.com]
mirror -c -e -R /home/nexusei/prova ftp/
exit
Come vedi ho creato una cartella per provare quando in realtà i file dovranno poi essere prelevati da una chiavetta perchè l’hd è troppoo piccolo…clicco sopra e dico esegui nel terminale…si apre e si chiude velocissimo un terminale e fine della storia….credo che stò facendo un sacco di errori…mi potresti darer qualche suggerimento..oppure sai dove posso recuperare una guida in italiano per imparare ad usare lftp…grazie mille
xer said
Ciao
No, non devi aggiungere l’estensione .sh, perchè un file utilizzato dall’eseguibile per leggere i comandi.
Il tuo sembra tutto okay, tranne gli apici, riporto parte della mia guida:
———————————————————————————–
user= è il login ftp del vostro server web o server ftp remoto, per accessi con username particolari come ad esempio un account di aruba, il quale è uno dei pochi provider che vendono hosting con spazio web illimitato, utilizzare l’username con gli apici come segue:
open -u ’132345@aruba.it’,password -p [port] [server]
mirror -c -e /directory_remota /directory_locale
exit
————————————————————————————-
Spero di esserti stato di aiuto!
xer said
dimenticavo, non é altresì necessario racchiudere gli altro campi dalle parentesi quadre “[” ma immetti solo i valori necessari.
E.g. open -u ‘12345@aruba.it’,password -p 21 http://ftp.server.com
francesco said
seguendo la procedura per il download mi fa connettere al server remoto, ma non mi fa scaricare la cartella.
ho notato inoltre che in una rete locale il download funziona perfettamente.
cone mai?
Giovanni Cappellini said
Torno sempre su questa pagina ogni volta che mi serve lftp… ottimo lavoro!
Come copiare file attraverso Internet in UNIX/Linux (Redhat, Debian, FreeBSD, etc) - scp tar rsync - weblogix.biz said
[…] UPDATE: molto più comodo di wget per questo scopo è lftp. […]