如何使用 Linux shell 命令从一台计算机复制到另一台计算机?

如何使用 Linux shell 命令从一台计算机复制到另一台计算机?

我想将文件(home/remote_computer_user/Desktop/test1.txt)从我的远程办公室计算机(永久 URL + 开放端口)复制到我的家用计算机(home/home_computer_user/Downloads/)。

我如何使用 Linux 中的 shell 命令来做到这一点?

我目前的想法:

  1. ssh <user>@<computer1address> -p <port>- 给我一个远程计算机上的 shell
  2. (我想我应该使用scp,但我不知道在我的情况下究竟该如何使用)

我应该使用哪些具体的命令?

答案1

它应该是这样的:

scp -P <port> user@comp1:Desktop/test1.txt ~/Downloads/

在您的家用电脑上运行此程序。

希望对你有帮助。

答案2

scp有效,但您也可以使用rsync

rsync -e 'ssh -p <port>' <user>@<computer1address>:Desktop/test1.txt ~/Downloads/

大多数情况下,rsync它是 的替代品scp,也就是说,对于大多数scp命令,您只需将其替换scprsync,它就会以相同的方式工作。唯一不适合您情况的原因是,它rsync没有-p指定端口的选项(好吧,它确实有,但它仅适用于 rsync 通过其自己的本机协议而不是通过 ssh 连接的情况)。因此,您需要告诉它使用包含端口的备用 ssh 命令。

如果你的 ssh 服务器使用标准端口,或者你已经配置了端口~/.ssh/config(无论哪种情况,这意味着你在使用 ssh 连接时不需要使用该-p选项),那么你只需运行

rsync <user>@<computer1address>:Desktop/test1.txt ~/Downloads/

总的来说,我更喜欢rsync这样做,scp因为它有更多的选项,而且如果你要传输大量文件,rsync 可以跳过目标系统上已经存在的文件,从而减少需要传输的数据量。

答案3

如果你有 FTP 或 SCP,就用它。这样更方便。如果你只能使用 ssh(就像我在许多嵌入式系统上一样)

上传单个文件:

 ssh login@remotehost -p remoteport "cat >filename" <filename

下载单个文件:

 ssh login@remotehost -p remoteport "cat filename" >filename

上传目录

 tar -cf - dirname | ssh login@remotehost -p remoteport "tar -xf -"

下载目录

 ssh login@remotehost -p remoteport "tar -cf - dirname" | tar -xf - 

相反,dirname您可以指定多个文件、目录或要匹配的模式。注意绝对路径。

答案4

sftp 是 scp 的替代工具,可能更为人熟知,也更适合多文件传输。我遇到的所有 ssh 主要版本都附带了 sftp。

相关内容