我想将所有的文件和文件夹从一台主机复制到另一台。 旧主机上的文件位于/ var / www / html,我只能通过FTP访问该服务器,而我不能打开所有的文件。 通过FTP定期连接到旧主机将我带到/ home / admin文件夹。
我尝试从我的新服务器运行以下命令:
wget -r ftp://username:[email protected]
但是我得到的只是一个制作好的index.html文件。
通过FTPrecursion使用wget的正确语法是什么?
尝试-m
为--mirror
wget -m ftp://username:[email protected]
你说得对,你只需要结尾*:
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命令不起作用,第二个命令正常工作。
除了wget,你也可以在脚本模式下使用lftp 。 以下命令将给定远程FTP目录的内容映射到给定的本地目录,并将其放入cron作业:
lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'
它会自动处理recursion到目录,并允许指定远程源起始目录从下载数据。
您可以使用'curlftpfs – 将ftp主机挂载为本地目录',一旦挂载,就可以使用'cp -r'之类的普通文件工具。
检查下面的wget命令以recursion方式从FTP下载数据。
wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"
-r
:用于recursion下载。
-np
:没有父级升序。
-nH
:用于禁止创build名称与URL相同的目录,即abc.xyz.com
--cut-dirs
:用于忽略父目录的数目。 这个选项的值会因你的命令而有所不同。
您可以通过执行上述命令来检查。
应该尝试工作:
wget -r ftp://ftp:[email protected]/tst/
由于recursion深度的原因,使用-m而不是-r。
http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11
使用:
wget -m ftp://192.168.0.1
它会镜像所有的文件和文件夹。
这是正确的语法。 不知道为什么你没有得到预期的结果。
和以往一样,有不止一种方法。 试试ncftp,特别是ncftpget
我可以理解,如果你试图把这个转储到cron或其他东西,但为什么不简单地用你的普通客户端和mget * ftp到服务器? 这可能是一个更快的成功之路。
正如我所说的,通过FTPlogin需要我到/ home / admin文件夹,我需要的文件在/ var / www / html
我认为这将适用于你的情况:
wget -r ftp://192.168.0.1/../../var/www/html
我遇到Windows主机与用户名brinkster /用户名,所以wget会抛出一个错误,如果你使用的语法:
wget -m ftp://brinkster/username:[email protected]
要通过这个,使用
wget -m ftp://brinkster%2Fusername:[email protected]
我不得不面对Windows托pipe@ brinkster这个。
wget --user username --password yourpassword ftp://example.com/ftpfiles/filename
yourpassword ftp://example.com/ftpfiles/filename将完成这项工作,或者你可以添加*而不是文件名的主题:让wget想起你的情况下无效的端口。