Command line 使用SSH/命令行将服务器FTP传输到服务器

Command line 使用SSH/命令行将服务器FTP传输到服务器,command-line,ssh,ftp,rsync,Command Line,Ssh,Ftp,Rsync,我有很多供应商,他们提供FTP来下载他们产品的图片。其中一些人喜欢使用集合或样式名称,然后使用sku,将它们放入多个子文件夹中。例如,它们将使文件夹结构类似于: Main folder ---> Collection A ------> Sku A ----------> SKUApicture1.jpg, SKUApicture2.jpg ------> sku B ----------> SKUBpicture1.jpg, SKUBpicture2.jpg -

我有很多供应商,他们提供FTP来下载他们产品的图片。其中一些人喜欢使用集合或样式名称,然后使用sku,将它们放入多个子文件夹中。例如,它们将使文件夹结构类似于:

Main folder
---> Collection A
------> Sku A
----------> SKUApicture1.jpg, SKUApicture2.jpg
------> sku B
----------> SKUBpicture1.jpg, SKUBpicture2.jpg

---> Collection B
------> Sku C
----------> SKUCpicture1.jpg, SKUCpicture2.jpg
------> sku D
----------> SKUDpicture1.jpg, SKUDpicture2.jpg
到目前为止,我发现通过SSH登录到我的服务器,导航到我想要的文件夹,然后登录到我供应商的FTP,在这一点上,我输入用户名a PW,导航到我想要的文件夹,然后使用mget拍摄所有图像是最简单的。如果所有(或大部分)文件都在一个文件夹中,这很简单

问题是,mget不会获取文件夹或子文件夹,它只获取给定文件夹中的文件。在上面的示例中,我的供应商有10多个文件夹,每个文件夹都有100多个子文件夹,因此导航到每个文件夹不是一个选项

此外,我所从事的行业并不精通技术,因此要求他们的“技术人员”启用/允许SCPSFTP、或rsync等可能不是一种选择

本地下载所有图像并将其重新上传到我的服务器也是不现实的,因为此文件夹超过10GB

我正在寻找一个命令(mget或其他命令),该命令允许我按原样获取所有文件和子文件夹,并直接复制到我的服务器(通过SSH

谢谢


注意:对于这个特定的服务器,我尝试了rsync,但收到一个错误,告诉我它与该命令不兼容。我怀疑我的命令有误,但如果您想将正确的方式发布到rsync,我将非常乐意再试一次,并提供确切的错误。您考虑过使用SFTP吗?你说过FTP按照你想要的方式工作,而SFTP的工作方式完全相同。支持SFTP的FTP客户端的行为与此完全相同,但它使用SSH进行连接。

您是否尝试过类似的方法

wget -r ftp://username:password@ftp.example.com/
它应该递归地从远程ftp获取所有文件。

您可以使用:

lftp-e'mirror'-u,

摘自。

另一台服务器将不允许使用SFTP登录。现在尝试此操作,它似乎正在工作。很快会回来的。这里的钥匙是wget吗?也就是说,如果我通过ftp登录并使用wget,它会工作吗?我相信我以前尝试过wget(曾经登录过),它给了我一个错误,说远程服务器无法识别wget@JoshBwget的行为将类似于普通浏览器。如果可以使用浏览器下载,则可以使用wget进行下载。@JoshB如果该命令未安装在服务器中,并且您具有root访问权限,则可以使用
yum install wget
安装它(对于基于Redhat的系统)或
apt get install wget
安装它(对于基于Debian的系统)。感谢您的帮助,它成功了。我只是想向以后看到这一点的任何人澄清:wget是关键,但您需要以Tk421发布的方式访问它,这样,您自己的服务器会不断请求文件。如果您先访问远程服务器,然后使用wget请求文件,则远程服务器可能不允许wget/可能无法使用它,因此可能无法将文件发送回您。
lftp -e 'mirror <remote download dir> <local download dir>' -u <username>,<pass> <host>