最近接了一个需求,主要是对 FTP 操作的一系列功能,中间遇到一个问题就是如何通过命令行方式从 FTP 下载一个文件夹到本地。搜索了一下 FTP 现有的命令,无法实现将一个目录下所有子目录的文件都复制下来,mget 命令仅能下载文件,而不能下载目录。搜索后得知,可以通过 wget 命令来解决。一个示例如下:

1
wget ftp://ghost:111111@172.16.5.20/phoenix_iteration_mirror_image/product_master/* -P ~/product_test -r

wget 指定 FTP 服务器帐号、密码和目录,以 * 结尾表示下载所有内容 -P 指定下载到本地哪个目录 -r 表示递归下载目录下所有子目录及文件 以上命令可以成功下载一个目录到本地,但你会发现,如果你有中文目录,那么下载下来的中文名字被编码了,并不是原始的中文,要解决这个问题,只需要加上一个 -restrict-file-names=nocontrol 参数即可。如下所示:

1
wget ftp://ghost:111111@172.16.5.20/phoenix_iteration_mirror_image/product_master/* -P ~/product_test -r --restrict-file-names=nocontrol