scp命令 - 通过ssh传输文件夹

时间:2016-03-01 15:42:57

标签: ssh scp

我有一个Arduino Yun,想要为Yun设置服务器。

所以我想要的是将包含py文件和index.html的文件夹复制到我的Yun

我使用mac终端进行此操作

命令看起来像这样

scp -r /Users/gudi/Desktop/LobsterHeartRate root@192.168.240.1:/mnt/sda1

然后终端要求输入密码

输入后

显示

scp: /mnt/sda1/LobsterHeartRate: Not a directory

我没有输入/ mnt / sda1 / LobsterHeartRate为什么会显示此错误

2 个答案:

答案 0 :(得分:0)

正如@JensHöpken所说,你的帖子有点稀疏。但是,尝试在帖子的行之间进行阅读,我怀疑LobsterHeartRate是本地系统上的DIRECTORY,但是目标系统中的FILE名为LobsterHeartRate。这可能发生在目录树的顶部,或者您可能在树的下方有相同名称的目录/文件。 scp -rv可能有助于解决这里的任何混淆。

注意: scp -r解析符号链接。如果要保留符号链接,则需要执行其他操作。出于历史原因,我使用以下内容,但 cpio 带有 find 前端,为细粒度文件选择打开了有趣的可能性。

  ( cd /Users/gudi/Desktop && tar -cf - LobsterHeartRate ) |
      ssh root@192.168.240.1 'cd /mnt/sda1 && tar -xf -'

对于安全的“干运行”,您可以将-xf更改为-tf。和&&如果任何先前命令失败,则需要链来防止发生不良事件。

免责声明:任何调试都留给学生练习。

答案 1 :(得分:0)

您的代码

scp -r /Users/gudi/Desktop/LobsterHeartRate root@192.168.240.1:/mnt/sda1

要求远程目录/mnt/sda1存在。在您的情况下,这看起来并非如此。使用ssh root@192.168.240.1 ls /mnt/sda1进行检查。

scp是一个简单的工具,它不允许您动态重命名目录,目标目录必须存在。你可以试试

scp -r /Users/gudi/Desktop/LobsterHeartRate root@192.168.240.1:/mnt/
ssh root@192.168.240.1 mv /mnt/LobsterHeartRate /mnt/sda1

左右,如果它符合您的需求。但是复制更多文件rsync通常更合适。检查其手册页并在下次尝试。