"scp" 的 Elixir -- 权限被拒绝并且连接丢失

Elixir with "scp" -- permission denied and connection lost

我正在尝试将文件从远程服务器 B 复制到远程服务器 A。我的 Elixir 应用程序在服务器 A 上。我正在这样做:

a1 = System.cmd("scp", ["[serverB.....]", "/opt/folder1/"])  
# => Permission denied 
# {"", 1}



a2 = System.cmd("scp", ["serverB.....]", "/home/my_user"])
# => Connection to serverB closed by remote host.
# lost connection
# {"", 1}

在第一种情况下,除了权限被拒绝外,我什么也没收到。

在第二种情况下我确实收到了一个文件,这很好,但是为什么它看起来像失败了?

我的目标是让首先工作,因为我希望文件直接下载到“/opt/folder1/ ”。最好。

我该怎么做?可以通过scp吗?还是我应该先将它下载到我的主目录?

为什么在 第二种情况 中有点失败,怎么了?

此外,也许我应该改用 rsync 来避免权限问题?

更新:

我已授予文件夹“/opt/folder1/”

的权限
  sudo chmod 775

但错误并没有消失。

更新2

我已授予 777 权限。一切正常 -- 文件已下载。但是 return 结果仍然是这样的:

Connection to bb.bb.bb.bb closed by remote host.
lost connection
               {"", 1}

这是为什么? 1 意味着 "error" 不是吗?更别说"lost connection".

使用 plain old good ssh 登录到 serverB 并执行:

sudo chown -R my_user /opt/folder1/

或(如果且只有您完全理解后果):

sudo chmod a+xw /opt/folder1/

从远程注销。现在你应该可以成功执行System.cmd/3

一般来说,scp 命令的格式为:

scp SOURCE_FILE TARGET_USER@TARGET_HOST:TARGET_DIR

所以你最好执行:

System.cmd("scp", ["my_local_file", "my_user@bb.bb.bb.bb:/opt/folder1/"])

这样你应该会收到来自 System.cmd/3{"", 0} 回复。