tar 是linux 上的打包压缩工具,以下是一些常用功能的小结,包括打包,压缩,增删改tar包,选择性打包,选择性解包等等。
打包 :tar -cvf xxx.tar xxx/
解包 :tar -xvf xxx.tar
压缩:tar -zcvf xx.gz xxx/ tar -jcvf xx.bz2 xxx
解压:tar -zxvf xx.gz xxx/ tar -jxvf xx.bz2 xxx
将xxx.tar包再压缩 :
tar zcvf xxx.tar.gz xxx.tar
这种方式压缩的,tar -tvf xxx.tar.gz show出来的详情里是一个xxx.tar
直接将文件/目录打包并压缩:
tar zcvf xxx.tar.gz xxx/
这种方式压缩的,tar -tvf xxx.tar.gz show出来的详情里是目录xxx/的内容
大小比较
tar cvf jk_scripts.tar jk_scripts/
tar zcvf jk_scripts.gz jk_scripts/
tar zcvf jk_scripts.tar.gz jk_scripts.tar
ls -Sl ./jk*.*
-rw-rw-r-- 1 relmgr relmgr 143360 Oct 10 13:41 ./jk_scripts.tar
-rw-rw-r-- 1 relmgr relmgr 25338 Oct 10 13:41 ./jk_scripts.tar.gz
-rw-rw-r-- 1 relmgr relmgr 25269 Oct 10 13:41 ./jk_scripts.gz
jk_scripts.gz < jk_scripts.tar.gz < jk_scripts.tar
直接打包并压缩成-zcvf最小,分开打包再压缩居中,只是tar包无压缩最大
那么
为什么还经常看到xx.tar.gz呢。
因为tar比gz 更好维护,.tar能增删改,而已压缩的.gz 是无法更新的。
tar -uvf jk_scripts.gz jk_scripts/sent_to_FTP.sh
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now
tar -uvf jk_scripts.tar jk_scripts/sent_to_FTP.sh
jk_scripts/sent_to_FTP.sh
往.tar 包中追加文件:tar -rvf xxx.tar list.txt
往.tar包中删除文件:tar -vf xxx.tar --delete list.txt
往.tar包中更新文件:tar -uvf xxx.tar list.txt
把t1.tar的内容加在t2.tar的后面:tar -Avf t2.tar t1.tar
注意:
当执行修改包操作不能使用-t 。
当包中有绝对路径时,需要在f前加上P,否则会因为包中有“/”而报错: "tar: Removing leading `/' from member names"
使用指定列表打包 :-T
tar cvf .tar -T tar.lst
tar 默认使用相对路径,如果 tar.lst 有文件名包含绝对路径,需要加P 。
反选打包 ,指定某个文件不打进包里
tar --exclude test/ls.txt cvf xxx.tar test/
按日期打包,只打包某个时间之后的文件
tar cvf tar.tar * -N "2018/10/10"
tar cvf tar.tar * --after-date '2018-6-09 00:00:00'
选择性解包
tar xvf xxx.tar test/test/lst.txt
指定解包位置:
tar xvf xxxx.tar -C /xxxx/xxxx/xxx/
No Leanote account? Sign up now.