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

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

我已登录服务器(使用 Putty)。从那里我使用 FTP 连接到另一台服务器。我想使用 mput 将几个文件夹从第一台服务器复制到第二台服务器。

喜欢:

ftp> mput folder1 folder2 folder3

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

我怎样才能在不压缩内容然后传输的情况下完成我想要做的事情?

答案1

命令行 FTP 非常原始。

您不能以递归方式向远程站点发送文件/文件夹。

如果您想要在远程端重新创建与本地相同的目录结构,则需要手动指定mkdir每个路径并使用mput *将该目录中的所有内容发送到远程端。

有两个选项可以使这变得更容易:

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

  2. 使用 tar 将文件夹打包,发送文件并在远端提取。

答案2

我编写了一个 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 {} \;

似乎有效。

答案3

由于 mput 不使用递归,因此普通 ftp 程序无法做到这一点。您可以使用 ncftp,然后调用“mput -r 文件夹”。

祝一切顺利,法比安

答案4

安全复制 scp 有一个 -r 递归标志,您可能会觉得它很有用。

相关内容