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

ome*_*ega 384 scp cp

在我的终端 shell 中,我通过 ssh 连接到远程服务器,然后进入我cd想要的目录。

现在在这个目录中,有一个名为table我想复制到本地机器的文件/home/me/Desktop

我怎样才能做到这一点?

我试过了,scp table /home/me/Desktop但它给出了一个关于没有这样的文件或目录的错误。

有谁知道如何做到这一点?

hee*_*ayl 585

的语法scp是:

如果您在要将文件发送到远程计算机的计算机上:

scp /file/to/send username@remote:/where/to/put
Run Code Online (Sandbox Code Playgroud)

此处remote可以是 FQDN 或 IP 地址。

另一方面,如果您在想要从远程计算机接收文件的计算机上:

scp username@remote:/file/to/send /where/to/put
Run Code Online (Sandbox Code Playgroud)

scp 还可以在两个远程主机之间发送文件:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put
Run Code Online (Sandbox Code Playgroud)

所以基本语法是:

scp username@source:/location/to/file username@destination:/where/to/put
Run Code Online (Sandbox Code Playgroud)

您可以阅读man scp以获取更多关于此的想法。

  • `scp -r` 将递归复制。 (7认同)
  • 如果我想复制多个文件怎么办?我添加了一个空格,只是使用了另一个 ```/file/to/send``` 感谢您的精彩回答! (4认同)
  • @heemayl +1 的好答案。想补充一点,在它是安全连接(需要身份验证)的情况下,您可以使用以下内容(用于将文件从本地复制到远程):scp -i mykey.pem somefile.txt root@remotehost.ip.address :/一些/文件夹/在/远程 (3认同)
  • 我想将文件从网络复制到我的虚拟机...如何使用 scp 实现相同的目标 (2认同)
  • 使用 `scp -P 123` 指定自定义端口 (2认同)
  • 如果我有一个活动的 ssh 会话,那么我必须退出从远程到本地的 scp ssh 会话。还有其他办法吗? (2认同)

fug*_*ive 20

您可以使用rsync作为替代。它主要用于同步文件……但您也可以将其用于此目的。

rsync -avzh --stats --progress remoteuser@remoteip:/path/  localpath 
Run Code Online (Sandbox Code Playgroud)

添加 ssh 选项:

rsync -e "ssh -P $port_value" remoteuser@remoteip:/path/  localpath
Run Code Online (Sandbox Code Playgroud)

--progress并且--stats对于传输的实时显示很有用。

我认为这是比 SCP 更好的选择,因为它会跳过已经传输的文件,这在您复制大量文件时很明显。


小智 16

scp root@10.240.179.4:/root/Jmeter/reports.jtl Downloads/
Run Code Online (Sandbox Code Playgroud)


小智 11

scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Run Code Online (Sandbox Code Playgroud)

如果您使用端口:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Run Code Online (Sandbox Code Playgroud)


onu*_*gör 5

如果您完全信任网络中的每个人并且可以直接连接目标计算机的端口,则可以使用 netcat: nc

假设目标计算机的 IP 地址是 192.168.1.123

在目的地运行:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir
Run Code Online (Sandbox Code Playgroud)

您可以选择不同的端口,也可以绑定到接口的另一个IP,0.0.0.0 只捕获所有接口。

在源上运行:

tar zcvf - filename | nc 192.168.1.123 7777
Run Code Online (Sandbox Code Playgroud)

恕我直言,这是使用数字网络将文件从一台计算机发送到另一台计算机的最快方法。

nc不同版本的和之间的参数和命令行选项可能会略有不同tar,但它肯定适用于最新的 Linux 发行版。