旧主机上的文件位于/ var / www / html,并且我只能通过FTP访问该服务器,而我无法TAR所有文件。
通过FTP到旧主机的定期连接将我带到/ home / admin文件夹。
我尝试从新服务器上运行以下命令:
wget -r ftp://username:password@ip.of.old.host
但是我得到的只是一个编好的index.html文件。
通过FTP递归使用wget的正确语法是什么?
/>
#1 楼
尝试将-m
用于--mirror
wget -m ftp://username:password@ip.of.old.host
评论
出于安全原因,最好使用--ask-password避免将密码保留在历史记录中。
–校验和
2014年10月4日在2:49
太酷了像魅力一样工作。
– Sambhav Sharma
2015年10月7日在21:11
这应该是可接受的答案(以提高可见性)。
–阴郁
16年3月3日在15:52
它不包含要下载的目录路径,我想@Formoda的答案更好
– Wasim A.
17年4月24日在6:38
@WasimA。,您也可以在此处添加目录路径:wget -m ftp:// username:password@ip.of.old.host/mydir/
– Alex Che
19年5月16日在15:28
#2 楼
没错,您只需要在末尾加一个*:wget -r ftp://username:password@1.2.3.4/dir/*
对于共享服务器,您可以这样使用:
wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password
因为大多数共享服务器具有ftp-username之类的名称,例如username @ hostname,所以,第一个wget命令不起作用,第二个命令可以正常工作。
评论
这只会深入一个目录。最好使用-m标志
– SvennD
15年8月13日在12:18
在某些情况下,由于空间不足,第二个命令不起作用,您可以像这样使用第一个命令进行共享托管。 ** wget -r ftp:/ /用户名%40host:password @ host / dir / **
– Wasim A.
17-4-24在7:11
注意:您应该使用-m或-r -l inf,因为-r的默认递归深度为5。请参阅gnu.org/software/wget/manual/…
– ndemou
17-10-10在20:45
#3 楼
除了wget,您还可以在脚本模式下使用lftp。以下命令会将给定的远程FTP目录的内容镜像到给定的本地目录中,并且可以将其放入cron作业中:lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'
它自动处理递归进入目录,并允许从中指定远程源起始目录以从中下载数据。
#4 楼
您可以使用“ curlftpfs-将ftp主机作为本地目录挂载”,一旦挂载,您就可以使用“ cp -r”等普通文件工具。评论
curlftpfs现在有主要的性能问题,除非您将libcurl3-gnutls降级
–恒杰
2015年2月6日下午5:40
#5 楼
检查以下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
:用于忽略父目录的数量。此选项的值因您的命令而异。您可以通过执行以上命令进行检查。
#6 楼
由于递归深度,请使用-m而不是-r。http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11
#7 楼
应该可以尝试:wget -r ftp://ftp:ftp@ftp.sunet.se/tst/
#8 楼
使用:wget -m ftp://192.168.0.1
,它将镜像所有文件和文件夹。
评论
就像我说的那样,通过FTP登录会将我带到/ home / admin文件夹,并且我需要的文件位于/ var / www / html中,所以当我运行您建议的命令时,我只会得到/ home / admin的内容我尝试使用192.168.0.1/var/www/html运行它,但随后尝试CWD / home / admin / var / www / html。如何使其从根目录转到该文件夹?
–user9406
09年6月13日在17:23
我没有这个特殊问题的经验,但是您可以尝试在您家的下方建立一个符号链接到/ var / www / html。然后您可以使用192.168.0.1/html之类的地址
–保存
09年6月13日在17:29
我尝试创建符号链接,但是wget在本地创建了类似的符号链接。
–user9406
09年6月13日在17:32
#9 楼
那是正确的语法。不知道为什么您没有得到预期的结果。和以往一样,有多种方法可以做到这一点。尝试ncftp,尤其是ncftpget
评论
我无法在新服务器上安装更多软件。我不应该告诉wget从/ var / www / html下载所有文件吗?我尝试了wget -r username:password@ip.of.old.host/var/www/html,但是我发现目录未找到错误。
–user9406
09年6月13日在9:37
#10 楼
我能理解您是否尝试将其转储到cron或其他东西中,但是为什么不使用普通的客户端和mget *来简单地ftp到服务器中呢?这可能是一条通往成功的捷径。评论
我尝试了mget *,但不适用于子文件夹,因为它说本地子文件夹不存在。有没有办法让他自动创建本地文件夹?
–user9406
09年6月13日在17:16
根据您的客户端,-r开关通常可以解决问题。 IE:mget -r *
–博士
09年6月15日在6:17
嗯Linux中的AFAIK标准ftp客户端并非旨在递归检索目录。我的意思是-没有-r选项。其他客户端(例如ncftp或lftp)支持递归检索,但默认情况下通常不可用。
–斯坦
2011-2-13在5:42
#11 楼
如我所说,通过FTP登录
将我带到/ home / admin文件夹,
,我需要的文件位于
/ var / www / html
我认为这可以解决您的情况:
wget -r ftp://192.168.0.1/../../var/www/html
#12 楼
我遇到了Windows托管,其用户名为brinkster / username,因此,如果使用以下语法,wget会引发错误:wget -m ftp://brinkster/username:password@ip.of.the.host
要克服这个问题,请使用
wget -m ftp://brinkster%2Fusername:password@ip.of.old.host
我不得不在Windows主机@ brinkster面前面对这一问题。
#13 楼
wget --user username --password yourpassword ftp://example.com/ftpfiles/filename
可以完成这项工作,或者您可以添加*而不是输入文件名:使wget想到在您的情况下无效的端口。评论
这个对已有四年历史的问题的答案带有多个被投票的答案,并没有提供新的内容,甚至没有提供递归副本的要求。
– Sven
13年6月20日,0:10
评论
请注意,默认情况下,wget -r的最大递归深度为5;默认值为0。如果您有更深的子目录,除非您更改此子目录,否则它们将被忽略(请参见手册页中的-l)。