在SSH环境中,我们可以用SCP命令来传输文件。一旦遇到例如网络问题引起的SCP命令不起作用,怎么办呢?这时候只要你的SSH工具是可以连上主机的,我们仍然可以通过SSH的传输通道来传输文件。
原理:用tar命令,把需要传输的文件压缩并输出到标准输出,然后通过管道符把标准输出的内容传递给SSH的tar命令,- 作为tar命令的参数,并将文件解压到目标主机上指定的目录。
示例1,从远程主机下载文件:
$ssh -p28080 root@syflog.com "tar zcvf - file.pdf" | tar zxvf - -C ~/Downloads #将远程主机上root目录中的file.pdf这个文件复制到本地的 ~/Downloads
除此以外,你还可以配合tar命令,传输任何文件或者目录。
示例2,从本地上传文件到远程主机:
$tar zcf - id_rsa.pub | ssh -p28080 root@syflog.com tar zxf - -C /tmp #上传本地当前目录的id_rsa.pub文件到远程主机的/tmp目录
提示:这里的传输不像wget那样有进度条,SSH是没有的,传输过程中会出现终端假死,等待即可。另外“-”代表标准输出,是不能少的。