我一直在远程服务器上的屏幕会话中运行我的代码。我想使用 SCP 将远程服务器上此会话中生成的输出目录移动到本地服务器,但我无法这样做。
有没有办法做到这一点?
如果没有,我如何将文件夹从屏幕会话复制到远程服务器(以便我可以 SCP 到本地服务器)?
目前,这就是我所做的。
ssh [email protected]
[email protected]$ screen -r xxxx.pt
root@xxxxxx# ls media
Experiment_A
本地服务器
scp [email protected]:/media/Experiment_A/features /Users/local/ExpResult
(输出)
scp: /media/Experiment_A/features: No such file or directory
答案1
您似乎正在重新连接由 root 启动的会话。这些文件可能位于/root
.
无论它们在哪里,您都可能必须更改文件权限才能读取它们。看在 gnu/linux 上设置文件权限等有哪些不同方法
它们也可能位于仅限单个用户的安装点上。如果是这样,如果文件很小,则将它们复制到远程计算机上的您自己,然后 scp。
答案2
scp
我看起来好像你的命令中的路径有点错误。
以下应该有效:
scp [email protected]:media/Experiment_A/features /Users/local/ExpResult
说明:当您登录到远程计算机时,您最终会进入主目录。这是最有可能的/home/username
(username
你的用户名在哪里)。在您的主目录中,您有该media
子目录。
在scp
命令中,如果您指定相对路径,即不以 开头的路径/
,该路径将相对于您的主目录。因此,只需从/
命令中使用的路径中删除 ,您就可以获得最有可能正确复制文件的路径media/Experiment_A/features
。
如果这不起作用,那是因为screen
会话已将其当前目录更改为其他位置。然后您可以做的是pwd
在会话中发出命令,然后使用scp
命令中输出的路径。
另一件要尝试的事情是scp
执行偏僻的机器将文件传输到本地机器。显然,只有当您被允许使用 SSH 从该计算机本地登录时,这才有效。