我想将文件(home/remote_computer_user/Desktop/test1.txt
)从我的远程办公室计算机(永久 URL + 开放端口)复制到我的家用计算机(home/home_computer_user/Downloads/
)。
我如何使用 Linux 中的 shell 命令来做到这一点?
我目前的想法:
ssh <user>@<computer1address> -p <port>
- 给我一个远程计算机上的 shell- (我想我应该使用
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
命令,您只需将其替换scp
为rsync
,它就会以相同的方式工作。唯一不适合您情况的原因是,它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。