Linux 管道传输文件

折腾 SunYF 5年前 (2020-05-24) 2172次浏览 已收录 0个评论 扫描二维码

在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是没有的,传输过程中会出现终端假死,等待即可。另外“-”代表标准输出,是不能少的。


孙艺峰的日志 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Linux 管道传输文件
喜欢 (1)
[13917237775@qq.com]
分享 (0)
关于作者:
Nothing to say
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址