it-swarm.cn

使用wget递归下载整个FTP目录

我想将所有文件和文件夹从一个主机复制到另一个。旧主机上的文件位于/ var/www/html,我只能通过FTP访问该服务器,而我无法TAR所有文件。通过FTP到旧主机的常规连接将我带到/ home/admin文件夹。

我尝试在新服务器上运行以下命令:

wget -r ftp://username:[email protected]

但是我得到的只是一个编造的index.html文件。

通过FTP递归使用wget的正确语法是什么?

97
user9406

尝试-m--mirror

wget -m ftp://username:[email protected]
129
Dave Cheney

您说对了,最后只需要在结尾加上*:

wget -r ftp://username:[email protected]/dir/*

对于共享服务器,可以这样使用:

wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password

由于大多数共享服务器都具有ftp-username之类的名称,例如username @ hostname,因此,第一个wget命令不起作用,第二个命令可以正常工作。

39
Formoda

除wget外,您还可以在脚本模式下使用lftp。以下命令会将给定的远程FTP目录的内容镜像到给定的本地目录,并将其放入cron作业中:

lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'

它自动处理递归到目录中,并允许指定远程源起始目录从来下载数据。

7
zappan

检查以下wget命令以递归方式从FTP下载数据。

wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"

-r:用于递归下载。

-np:没有父级升序。

-nH:用于禁止创建名称与URL相同的目录,即abc.xyz.com

--cut-dirs:用于忽略父目录的数量。对于您的命令,此选项的值将有所不同。

您可以通过执行以上命令进行检查。

5
AVJ

您可以使用“ curlftpfs-将ftp主机作为本地目录挂载”,一旦挂载,就可以使用“ cp -r”等普通文件工具。

5
chmeee

由于递归深度,请使用-m而不是-r。

http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11

3
Bojan Hrnkas

应该可以尝试:

wget -r ftp://ftp:[email protected]/tst/
2
rkthkr

采用:

wget -m ftp://192.168.0.1

它将镜像所有文件和文件夹。

2
Rajat

就像我说的那样,通过FTP登录将我带到/ home/admin文件夹,并且我需要的文件在/ var/www/html中

我认为这将适合您的情况:

wget -r ftp://192.168.0.1/../../var/www/html
1
kubanczyk

那是正确的语法。不知道为什么您没有得到预期的结果。

与以往一样,有多种方法可以做到这一点。尝试ncftp,尤其是ncftpget

1
goo

我能理解您是否尝试将其转储到cron或其他内容中,但是为什么不使用普通的客户端和mget *来简单地ftp到服务器中呢?这可能是一条更快的成功之路。

1
dr.pooter

我遇到Windows托管用户名为brinkster/username的情况,因此,如果使用以下语法,wget会引发错误:

wget -m ftp://brinkster/username:[email protected]

为了克服这个问题,请使用

wget -m ftp://brinkster%2Fusername:[email protected]

我不得不面对Windows托管@ brinkster。

0
Anto Joseph