如何在Unix中使用mput将多个文件夹FTP到另一个服务器?

我login在服务器上(使用腻子)。 从那里我连接使用FTP到另一台服务器。 我想使用mput将第一台服务器上的多个文件夹复制到第二台服务器上。

喜欢:

ftp> mput folder1 folder2 folder3 

但我得到“folder1:不是一个纯文件”…等等。 这些文件夹中的每一个都有子文件夹,文件(一些二进制文件,一些不)。

我怎样才能完成我想要的东西,而不是压缩的东西,然后转移?

命令行FTP是相当原始的。

您不能recursion地向远程站点发送文件/文件夹。

如果你想重新创build远程方面的目录结构,就像本地一样,你需要手动mkdir每个path,并使用mput *将该目录中的所有内容发送到远程端。

两个选项使这更容易:

  1. 停止使用原始的FTP命令(ncftp是一个很好的select)

  2. 使用tar来查找文件夹,发送文件并提取远端。

我做了一个bash脚本:

 #!/bin/bash ftp_site=ftp.yoursite.net username=my_user_name passwd=my_password remote=/path/to/remote/folder folder=$1 cd /path/to/local/folder/$folder pwd ftp -in <<EOF open $ftp_site user $username $passwd mkdir $remote/$folder cd $remote/$folder mput * close bye 

并用它来呼叫

 find . -type d -exec ./recursive-ftp.sh {} \; 

似乎工作。

这是普通的ftp程序不可能的,因为mput不使用recursion。 你可以使用ncftp,然后调用“mput -r文件夹”。

祝福,Fabian

Secure Copy scp具有-rrecursion标志,您可能会觉得有用。

打开powershell cd到要上传的目录,运行以下命令:

 1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all 2. notepad .\mput_all 

将结果粘贴到您的ftp窗口中。 请享用。 另外不要忘记添加mput *来传输基本目录中的所有文件。