To download multiple files from FTP server, we use mget command. Using that command we can download more than one file at a time. To download multiple files specify wildcard character for specifying directory name do download all files from the directory.
You could rely on wget which usually handles ftp get properly (at least in my own experience). For example:
wget -r ftp://user:[email protected]/
You can also use -m
which is suitable for mirroring. It is currently equivalent to -r -N -l inf
.
If you've some special characters in the credential details, you can specify the --user
and --password
arguments to get it to work. Example with custom login with specific characters:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
As pointed out by @asmaier, watch out that even if -r
is for recursion, it has a default max level of 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
If you don't want to miss out subdirs, better use the mirroring option, -m
:
-m --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
Just to complement the answer given by Thibaut Barrère.
I used
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Note the double slash after the server name. If you don't put an extra slash the path is relative to the home directory of user.
-nH
avoids the creation of a directory named after the server name-nc
avoids creating a new file if it already exists on the destination (it is just skipped)--cut-dirs=5
allows to take the content of /absolute/path/to/directory and to put it in the directory where you launch wget. The number 5 is used to filter out the 5 components of the path. The double slash means an extra component.ncftp -u <user> -p <pass> <server>
ncftp> mget directory
If lftp
is installed on your machine, use mirror dir
. And you are done. See the comment by Ciro below if you want to recursively download a directory.
If you can use scp
instead of ftp
, the -r
option will do this for you. I would check to see whether you can use a more modern file transfer mechanism than FTP.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With