关于tar 命令中 - (stdin/stdout)的巧用

tar -cvf - /home | tar -xvf -

前面把压缩结果存到-,后面通过管道 | 把存到-中的文件解压,如果纯粹看这个,觉得这不瞎折腾么,下面实战就发现了 使用 - 的好处了;

1. 实战案例1:

海量小文件传输方法
接收机:nc -l 8888 | tar xzf - -C /dest-dir 发送机:tar czf - /source-dir/ | nc 接收机ip 8888
在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表"标准输入/输出"的意思,上面命令把结果输入到-,然后再解压-; 接收机可以带上参数v,如 xzvf(便于可视化);如果发送机压缩命令带有z接收机也必须带上参数z 另外8888或其他端口,一定要放开,或者关闭防火墙;

2. 实战案例2:

find /directory -type f -name “mypattern” | tar -cf archive.tar -T -

找到某种文件后,压缩

3. 实战案例3 docker cp 命令

]# docker cp --help

Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

官网解释:

Use ‘-‘ as the source to read a tar archive from stdin and extract it
to a directory destination in a container. Use ‘-‘ as the destination
to stream a tar archive of a container source to stdout.

所以我们可以

docker  cp cfcc20077ad1:/opt/aa.tgz -  |  tar xvf  -  -C ./xx
tar  czf   -  anaconda-ks.cfg   initial-setup-ks.cfg   | docker cp  -  cfcc20077ad1:/opt/mydir

tar成对使用,前面一个是stdin 后面一个是stdout , 最终文件不会改变,-里面存的是压缩包,传输完成后还是压缩包,如果是文件传输完成后还是文件 ,只不过tar 传输比较快

更多干货见本人博客网站:https://blog.zhenglin.work/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值