2012-02-08 13:15:37 +0000 2012-02-08 13:15:37 +0000
29
29

sftp:上传文件夹中的所有文件、目录和子目录。

在A机上我有文件夹

/home/a/

在B机上我有文件夹

/home/b/

我想用sftp把/home/a的所有文件、目录和子目录转移到/home/b中 在A机上我尝试了命令。

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

但是没有成功,我得到了错误信息:"跳过非常规文件/home/b"。"skiping nonregular file /home/a/a1"…[a1是一个子目录。[a1是a的子目录] 如何修改put指令?

谢谢! :)

EDIT:

我用scp解决了:

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

答案 (6)

21
21
21
2014-10-02 20:33:25 +0000

sftp中,这个命令会递归地将当前目录的内容上传到远程的当前目录。

put -r .

man sftp

21
21
21
2012-02-08 22:41:19 +0000

虽然严格来说并不等同于sftp,但 rsync 是scp和sftp的一个非常强大的替代品,尤其是在更新从A机器到B机器的副本时,因为它不会复制没有被修改过的文件;它还能够从B机器上删除从A机器上删除的文件(当然,只有当它被告知时)。

在你的情况下,语法应该是

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

0x1&

-r选项是用来递归复制文件的,-z可以在传输过程中启用压缩功能,-p可以在复制时保留文件权限(文件创建、编辑等),这是scp在AFAIK上做不到的。还有更多的选项是可能的,照例要阅读man的页面。

10
10
10
2012-02-08 16:04:32 +0000

scp(安全拷贝)是Linux中通过安全隧道传输文件的事实。在你的情况下,你会想使用递归开关,比如说。

scp -r /home/a/ user@remote.host.com:/home/b/
4
4
4
2014-01-04 14:02:14 +0000

尝试使用

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

了解更多信息,请查看。这个

0
0
0
2017-10-05 13:53:58 +0000

实际上,put -r应该可以。但 destintion 文件夹需要在你的远程主机上存在:

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
```。
-1
-1
-1
2014-02-14 10:10:51 +0000

在我的情况下,rsync不可能,所以我用了。

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