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


18

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

喜欢:

ftp> mput folder1 folder2 folder3

但是我得到“文件夹1:不是普通文件。”……依此类推。这些文件夹中的每一个都有子文件夹,文件(有些二进制文件,有些则没有)。

如何在不压缩内容然后传输的情况下完成我想要的?

Answers:


19

命令行FTP非常原始。

您不能将文件/文件夹递归发送到远程站点。

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

有两种选择可以简化此操作:

  1. 停止使用原始FTP命令(ncftp是一个不错的选择)

  2. 使用tar压缩文件夹,发送文件并在另一端解压缩。


1
tar-> put-> untar的+​​1
dave

1
-1因为问题被问到“我如何才能完成我想要的而不压缩内容然后再进行传输?”,这意味着该人无权访问远程计算机。
SteenSchütt17年

11

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

最好的祝福,费边


这正是我最近在RHEL 5盒子上所做的。在EPEL程序包中,可执行文件名为ncftpput。
Suppressingfire

无法更改服务器配置中的任何内容。我只是一个用户...

这取决于您的客户。不在服务器上。
Halfdan

我更喜欢这样。谢谢。
Mojtaba Rezaeian

11

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

似乎有效。


0

Secure Copy scp具有-r递归标志,您可能会发现它很有用。


问题是关于简单的ftp访问..不是scp / sftp!
Mojtaba Rezaeian

-1

打开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 *来传输基本目录中的所有文件。


6
自从什么时候PowerShell可以在Unix系统上运行?
迈克尔·汉普顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.