我正在尝试将文件从远程服务器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
但错误并没有消失。
UPDATE2
我已经获得了权限777.它的工作方式 - 文件已下载。但返回的结果仍然如此:
Connection to bb.bb.bb.bb closed by remote host.
lost connection
{"", 1}
为什么? 1意味着“错误”不是吗?更别说“失去了联系”。
答案 0 :(得分:2)
使用普通旧版serverB
登录ssh
并执行:
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}
回复。