如何将文件从远程服务器复制到本地机器?

53
在我的终端窗口中,我通过ssh登录了远程服务器,并使用cd命令进入了想要的目录。现在,在这个目录下,有一个名为table的文件,我想将其复制到本地机器的/home/me/Desktop目录下。请问如何操作?
我尝试了scp table /home/me/Desktop,但出现了“没有这样的文件或目录”错误。请问有谁知道如何操作吗?
谢谢。

在这种情况下,远程服务器可以在不同的网络中,本地机器也可以在不同的网络中吗? - Raulp
4个回答

84
例如,您的远程主机是 example.com,远程登录名为 user1:
scp user1@example.com:/path/to/file /path/to/store/file

21
如果我在服务器上怎么办? - Ramesh Pareek
1
scp /path/to/local/file user1@otherhost:/path/to/file怎么样? - kkpoon
@kkpoon 如果我在服务器上,想要将文件从服务器复制到本地怎么办? - zheyuanWang
如果你在服务器上想要复制文件到本地机器,那么你的本地机器也必须是一个 SSH 服务器吗? - Quantifier
1
退出远程服务器。scp在表面下使用ssh。因此,如果您在本地计算机上输入scp命令,则scp将通过ssh登录到您的服务器以复制文件。如果您通常执行ssh my-user@my-server,现在请执行scp my-user@my-server:/my/path/to/my.remote.file /my/path/to/my.local.file - Stijn de Witt

8

scp操作与ssh登录分开进行。假设您使用jdoe帐户登录远程系统,并且远程系统是example.com,则需要发出类似以下命令的ssh命令:

scp jdoe@example.com:/somedir/table /home/me/Desktop/.

从/home/me/Desktop所在的系统发出的scp命令后面跟着远程服务器上账户的用户ID。然后,您需要添加一个“:”,后面是远程服务器上的目录路径和文件名,例如/somedir/table。然后添加一个空格和要复制文件的位置。如果您希望在客户端系统上使用相同的名称来保存文件,则可以在目录路径的末尾使用“.”表示;如果您想使用不同的名称,则可以使用/home/me/Desktop/newname。如果您正在使用非标准SSH端口进行连接,则需要使用“-P n”(大写P)指定该端口,其中“n”是端口号。标准端口是22,如果您没有为SSH连接指定它,则不需要。


6
当使用scp时,您需要告诉主机名和IP地址,以从要复制文件的位置进行复制。例如,如果您在远程主机上,并且想将文件传输到个人电脑上,您可以使用类似于以下内容的命令:
scp -P[portnumber] myfile_at_remote_host [user]@[your_ip_address]:/your/path/

例子:

scp -P22 table fake_user@111.111.111.11:/home/me/Desktop/

另一方面,如果你在你的机器上,你可以使用类似这样的命令:

scp -P[portnumber] [remote_login]@[remote's_ip_address]:/remote/path/myfile_at_remote_host /your/path/

示例:

将远程路径/remote/path/table上的文件复制到本地/home/me/Desktop/目录下,命令如下:

scp -P22 [fake_user]@222.222.222.222:/remote/path/table /home/me/Desktop/

1

我建议使用sftp,使用以下命令sftp -oPort=7777 user@host其中-oPort是ssh的自定义端口号,如果您将其更改为7777,则可以使用-oPort,否则如果仅使用端口22,则使用普通的sftp user@host,它会要求输入密码,然后您可以登录,并且您可以使用cd /home/user导航到所需的位置,然后使用简单的命令get table下载它。如果您想要下载一个目录/文件夹,则get -r someDirectory将完成此操作。如果您希望文件权限也存在,则使用get -Pr someDirectory。要上传到远程,请将上述命令中的get更改为put。


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