加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何通过ssh单独复制和gzip文件

发布时间:2020-12-14 02:32:27 所属栏目:Linux 来源:网络整理
导读:我想使用ssh传输一个包含未压缩文件的目录,并在此过程中单独进行gzip.有人可以推荐一个简单的oneliner来实现这个目标吗? 例如. fileA.ext – ssh / pipe – fileA.ext.gz 我已经通过压缩在ssh上管道tar,但是然后文件在管道的末尾被解压缩.在这种情况下,我希
我想使用ssh传输一个包含未压缩文件的目录,并在此过程中单独进行gzip.有人可以推荐一个简单的oneliner来实现这个目标吗?

例如.

fileA.ext – > ssh / pipe – > fileA.ext.gz

我已经通过压缩在ssh上管道tar,但是然后文件在管道的末尾被解压缩.在这种情况下,我希望它们保持压缩状态.

事先压缩是可能的,但是本地需要空间,或者每个文件需要连接(?)

有6000个文件,我更喜欢一个解决方案,其中所有文件都可以使用单个连接传输(尽管我使用密钥进行身份验证!)

解决方法

我想你宁愿先把它们gzip,然后把它们发送出去.
cat dafile | gzip -c | ssh remote "cat > dafile"

重复相关的循环结构.例如.

find -type f | while read fname ; do cat $fname | gzip -c | ssh remote "cat > $fname" ; done

……或者那种效果.需要设置pkey访问权限,否则这将是一个庞大的密码 – 速度类型的练习.

编辑:

关于单个连接的主题,请参阅man ssh_config ControlMaster.这意味着您可以节省协商这些6000个SSH会话中的5999个的开销.

EDIT2:

哈哈!我赢了!

tar zcf - /dir/of/files | ssh remote "tar zxf - --to-command=mygzip.sh"

存在于远程计算机上的mygzip.sh如下所示:

#!/bin/sh
mkdir -p "$(dirname $TAR_FILENAME)"
gzip -c > "${TAR_FILENAME}.gz"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读