Per effettuare il backup di un server ftp da linux utilizzeremo il comodo lftp

installare sulla propria macchina lftp

1
sudo apt-get install lftp

scrivere in un file (nominatelo ad es. lftp-script) le seguenti righe

1
2
open ftp://username:password@ftp.website.com
mirror -v --only-newer /www.website.com/folder /home/local/path/

mettete in sicurezza il file

1
chmod 600 lftp-script

eseguite

1
lftp -f /path/to/lftp-script

inserite magari il comando in un cron e avrete il vostro backup giornaliero o settimanale del server.

per completezza di seguito le altre opzioni del comando lftp

1
mirror [OPTS] [source [target]]

Mirror specified source directory to local target directory. If target
directory ends with a slash, the source base name is appended to target
directory name. Source and/or target can be URLs pointing to directo‐
ries.

-c, –continue continue a mirror job if possible
-e, –delete delete files not present at
remote site
–delete-first delete old files before transfer‐
ring new ones
–depth-first descend into subdirectories
before transferring files
-s, –allow-suid set suid/sgid bits according to
remote site
–allow-chown try to set owner and group on
files
–ascii use ascii mode transfers (implies
–ignore-size)
–ignore-time ignore time when deciding whether
to download
–ignore-size ignore size when deciding whether
to download
–only-missing download only missing files
–only-existing download only files already
existing at target
-n, –only-newer download only newer files (-c
won’t work)
–no-empty-dirs don’t create empty directories
(implies –depth-first)
-r, –no-recursion don’t go to subdirectories
–no-symlinks don’t create symbolic links
-p, –no-perms don’t set file permissions
–no-umask don’t apply umask to file modes
-R, –reverse reverse mirror (put files)
-L, –dereference download symbolic links as files
-N, –newer-than=SPEC download only files newer than
specified time
–on-change=CMD execute the command if anything
has been changed
–older-than=SPEC download only files older than
specified time
–size-range=RANGE download only files with size in
specified range
-P, –parallel[=N] download N files in parallel
–use-pget[-n=N] use pget to transfer every single
file
–loop loop until no changes found
-i RX, –include RX include matching files
-x RX, –exclude RX exclude matching files
-I GP, –include-glob GP include matching files
-X GP, –exclude-glob GP exclude matching files
-v, –verbose[=level] verbose operation
–log=FILE write lftp commands being exe‐
cuted to FILE
–script=FILE write lftp commands to FILE, but
don’t execute them
–just-print, –dry-run same as –script=-
–use-cache use cached directory listings
–Remove-source-files remove files after transfer (use
with caution)
-a same as –allow-chown –allow-
suid –no-umask

il resto lo potete trovare al link LFTP online man.