sftp:上传文件夹中包含的所有文件,目录和子目录


27

在机器AI上有文件夹

/home/a/

在计算机BI上有文件夹

/home/b/

我希望使用sftp传输/ home / b中/ home / a的所有文件,目录和子目录。在机器AI上尝试了以下命令:

sftp fibon82@machineB.com
put /home/a/* /home/b/

但它不起作用,我收到错误消息:“正在跳过非常规文件/ home / a / a1” ... [a1是a的子目录]
如何修改put指令?

谢谢!:)

编辑:

我用scp解决了:

scp -r /home/a/ fibon82@machineB.com:/home/b/

2
put -r也会起作用的。
WakiMiko 2012年

1
好的,但是我怎么知道对于“ put command”选项-r是可用的?如果我在这里只描述了-P标志,则与手册中的相同。 谢谢!:)
fibon82

您应该将其发布为答案。
NN 2012年

是。而不是用答案编辑问题,您应该回答自己的问题并接受。

@ fibon82有关OpenSSH的最新手册sftp,请参考OpenSSH项目
Martin Prikryl 2014年

Answers:


21

尽管rsync并不严格等同于sftp,但它是scp和sftp的非常强大的替代品,特别是在将副本从机器A更新到机器B时,因为它不会复制未更改的文件。它还能够从机器B中删除已经从机器A中删除的文件(当然只有在被告知时)。

在您的情况下,语法将是

rsync -zrp /home/a/ user@remote.host.com:/home/b/

-r选项用于递归复制文件,-z在传输期间启用压缩,并-p在复制时保留文件许可权(文件创建,编辑等),这是scp不会执行AFAIK的操作。可能还有更多选择。和往常一样,阅读man页面。


啊,谢谢你!:)我学到了新东西!
fibon82

@ fibon82:不客气:)
Karolos'2

1
我爱你,我仅用您的代码就在1分钟内同步了400MB数据。我要补充一点,您也应该使用--progress,否则您将茫然无知,而不知道发生了什么(以及以什么速度:))
Sandro Antonucci

1
可悲的rsync是不讲- sftp协议。因此,如果您sftp使用ssh的build ininternal-sftp设置了-chroot rsync失败。
蒂诺


9

scp(安全副本)实际上是用于通过安全隧道传输文件的Linux。在您的情况下,您将要使用递归开关,例如:

scp -r /home/a/ user@remote.host.com:/home/b/

5
sftp和scp实际上是不同的协议,都是基于ssh的。
paradroid

1
是的,如果服务器仅允许sftp协议,则此答案无效。
рüффп

4

尝试使用

put -r /home/a/ /home/b/

更多信息请查看:


1
仅从OpenSSH 5.4开始-r支持此开关。
Martin Prikryl 2014年

请注意,该-r开关仅在客户端(sftp命令的一部分)。因此服务器(在这里是:接收方)不需要OpenSSH 5.4,仅客户端需要支持它。并且:这应该是可接受的答案,因为获得(可能不受支持)rsync作为标记问题的答案会sftp有些混乱。
蒂诺州

0

实际上,put -r应该可以工作。但目的地文件夹需要存在于您的远程主机上:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

您是否添加了支持您陈述的参考和证据,并确认职位上现有的答案之一中尚未回答此答案。阅读“为什么我需要50个信誉才能发表评论”,以确保您了解如何开始发表评论。
Pimp Juice IT

-1

在我的情况下rsync是不可能的,所以我使用了:

mput -rp /home/a/ /home/b/

mputOpenSSH中没有命令sftp。也许您指的是psftp
Martin Prikryl 2014年
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.