linux tar
2019-01-11 16:22:44    956    0    0
gua_l

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/

 

 

 

Pre: GitLab GEO 异地主副服务器同步--文档翻译

Next: mount/nfs 共享目录

956
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments
Table of content