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

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

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

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

我怎样才能做到这一点?

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

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

答案1

的语法scp是:

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

scp /file/to/send username@remote:/where/to/put

这里remote可以是 FQDN 或 IP 地址。

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

scp username@remote:/file/to/send /where/to/put

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

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

所以基本语法是:

scp username@source:/location/to/file username@destination:/where/to/put

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

答案2

您可以用作rsync替代方案。它主要用于同步文件..但您也可以将它用于此目的。

rsync -avzh --stats --progress remoteuser@remoteip:/path/  localpath 

添加 ssh 选项:

rsync -e "ssh -P $port_value" remoteuser@remoteip:/path/  localpath

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

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

答案3

scp [email protected]:/root/Jmeter/reports.jtl Downloads/

答案4

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

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

在目的地运行:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

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

在源上运行:

tar zcvf - filename | nc 192.168.1.123 7777

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

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

相关内容