从FTP服务器下载所有文件

49

我需要从一个FTP服务器下载所有文件,并将它们托管到另一台服务器上。我只能通过 shell 访问正在下载文件的那台服务器。如何使用 Linux FTP 命令下载每个文件,并在此过程中创建所需的目录?

3个回答

95

使用以下方式运行wget(m表示镜像):

wget -m ftp://username:password@ip.of.old.host

如果您的用户名或密码包含特殊字符,您可能需要使用以下格式:
wget -m --user=username --password=password ftp://ip.of.old.host

另外,我发现这篇指南可以教您如何在Debian中使用ncftp进行下载。如果ncftp未安装,则需要root访问权限才能下载到新服务器。

简而言之:

sudo apt-get install ncftp
ncftpget –T –R –v –u "ftpuser" ftp.nixcraft.net /home/vivek/backup /www-data

谢谢。其实在看到这个之前我已经找到了。前五次没有使用正确的谷歌搜索关键词。 - Navarr
3
如果您收到“坏端口”错误消息,则可能将电子邮件地址作为用户名(因为互联网变得奇怪了),@符号会使wget混淆。请尝试:wget -m --user some.email@example.com --password myPassword ftp://example.com - Rob Drimmie
当密码以'@'结尾时,这种方法不起作用。有其他的替代方法吗? - A. K.

3

另一种方法是使用 ftp。下面是一个使用 ftp 的例子 shell 脚本:

#! /bin/bash

ftp -n << 'EOF'
open ftp.your_ftp_host.com
quote USER your_username_here
quote PASS your_password_here
cd gets
prompt no
mget * .
bye
EOF

1
此解决方案不会获取子目录内容。 - Tiziano Mischi

1
一些FTP服务器允许通过在目录名称后缀加上.tar或.tgz来下载整个目录。服务器随后会创建该目录的归档文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接