如何使用scp将文件从服务器复制到客户端?

9

我如何将远程访问的计算机上的文件传输回我当前所在的计算机?

有人能帮助我吗?

这是我目前知道的语法,

scp (文件名) (我不知道要放什么): (我的计算机上的位置)

4个回答

12

scp实际上比一开始看起来的要容易使用。

scp <from> <to>

<from><to>可以是本地或远程的。

远程文件的格式为user@host:path_on_remote

本地文件只是简单的路径:/path/to/my/file.txt

如果您手动操作,您可能会发现在登录到远程主机之前从localhost运行以下命令,而不将文件复制回办公室机器会更容易:

scp user@remotehost:/path/to/my/file/on/remote.txt /local/path/local.txt

如果您需要复制目录-如已经提到的-您可以给scp添加-r选项。

当登录到远程时,复制回来基本上是相同的,但您需要在本地计算机上运行ssh,这可能需要在本地路由器上进行端口转发。我倾向于在我的笔记本电脑上调用scp到服务器,而不是反过来。


8
如果您的计算机可以访问互联网,这种方法虽然有些取巧,但应该是可行的。
scp (filename) `echo $SSH_CLIENT | awk '{print $1}'`:(location on my computer)

更简单的方法(始终有效)是从您本地计算机的新窗口执行scp;
scp (remote computer):path/to/remote/file (location on my local computer)
remote computer指的是您通常ssh连接的相同地址。
例如,如果文件在远程计算机上命名为remotecomputer.com,位于您的主目录下的子目录important中,并且文件名为test.txt,则您可以在本地计算机上发出此命令将其复制到本地计算机上的当前目录;
scp remotecomputer.com:important/test.txt .

问题在于我不确定如何进行路径设置。我尝试了类似于/home/usernamefolder/(myfile)的方法,但出于某些原因它找不到该文件。当你进行路径设置时,从哪里开始? - Mechy
有没有办法找到我从远程计算机连接到本地计算机的地址? - Mechy
在远程计算机上运行 echo $SSH_CLIENT - Joachim Isaksson
2
@Mechy 如果您使用公钥身份验证(无密码登录)登录远程服务器,则可以像在普通的bash会话中一样进行制表符自动完成。我发现这非常有帮助,因为这意味着我不必创建一个ssh会话来复制路径。 - user2363448
1
我想通了。当我执行scp (主机):(这里放一个空格)/地址时,那就是问题所在。 - Mechy
显示剩余7条评论

2

需要使用pem文件(该文件需位于根目录中)

$ scp -i <pem.pem> <file_on_local> <user>@<remotehost>:/path/to/file

使用凭据

$ scp <file_on_local> <user>@<remotehost>:/path/to/file

1

man page中得知,man scp...

scp file_on_local user@host.name:/path/to/file

如果你加上-r,它可以传输整个目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接