我已登录服务器(使用 Putty)。从那里我使用 FTP 连接到另一台服务器。我想使用 mput 将几个文件夹从第一台服务器复制到第二台服务器。
喜欢:
ftp> mput folder1 folder2 folder3
但我收到“folder1:不是纯文件。”……等等。每个文件夹都有子文件夹、文件(有些是二进制文件,有些不是)。
我怎样才能在不压缩内容然后传输的情况下完成我想要做的事情?
答案1
命令行 FTP 非常原始。
您不能以递归方式向远程站点发送文件/文件夹。
如果您想要在远程端重新创建与本地相同的目录结构,则需要手动指定mkdir
每个路径并使用mput *
将该目录中的所有内容发送到远程端。
有两个选项可以使这变得更容易:
停止使用原始的 FTP 命令(ncftp 是一个很好的替代方案)
使用 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 递归标志,您可能会觉得它很有用。