tar压缩解压文件
----------------------------------------------2022-11-21 start----------------------------------------------
常用命令
文件类型 | .tar.gz /.tgz | .tar.bz2 /.tar.bz | .tar.Z | .tar.xz |
---|---|---|---|---|
压缩 | tar zcvf |
tar jcvf |
tar Zcvf |
tar Jcvf |
解压 | tar zxvf |
tar jxvf |
tar Zxvf |
tar Jxvf |
其他命令
文件类型 | .tar | .gz | .Z | .bz2 /.bz | .zip | .rar |
---|---|---|---|---|---|---|
压缩 | tar cvf |
gzip |
compress |
bzip -z |
zip |
rar a |
解压 | tar xvf |
gunzip /gzip -d |
uncompress |
bunzip2 /bzip2 -d |
unzip |
unrar x |
.tar 为打包/解包格式,不对文件进行压缩
.zip/.rar 需要安装特定程序
分卷压缩:
#压缩
tar zcvf dir_name | split -d -b 100m - file-name.tar.gz
#解压
cat file-name.tar.gz* | tar -zxf
必备参数
-f 参数置于末尾,接档案名
独立参数
-c 创建
-x 解压
-t 查看
-r 追加
-u 更新
可选参数
-z 含gzip属性
-j 含bz2属性
-Z 含compress属性
-v 显示所有过程
-O 将文件解开到标准输出
压缩算法的性能比较:Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO - CatchChallenger wiki : https://catchchallenger.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
----------------------------------------------2022-11-21 end----------------------------------------------
查看visualization1.5.tar.gz 压缩包里面的内容:
$ tar -tf visualization1.5.tar.gz
解压指定文件JavascriptVisualRelease/BFS.html到/home目录下
$ tar -zxvf visualization1.5.tar.gz JavascriptVisualRelease/BFS.html -C /home/(错误)
$ tar -zxvf visualization1.5.tar.gz -C /home/ JavascriptVisualRelease/BFS.html
解压指定文件JavascriptVisualRelease/BFS.html到当前目录JavascriptVisualRelease/下()
$ tar -zxvf visualization1.5.tar.gz JavascriptVisualRelease/BFS.html
向压缩文件包中追加文件
(如果文件已经归档且是是压缩文件,即压缩时使用了-cz选项),则无法追加文件,否则可以追加
$ tar -rvf test.tar.gz b.txt
一,rar分卷压缩和合并解压
rar -h
我们会发现以下参数,要创建多大的卷。
v Create volumes with size autodetection or list all volumes
v<size>[k,b] Create volumes with size=<size>*1000 [*1024, *1]
- [zhangy@BlackGhost awksed]$ rar a -v5m google.rar Google_Maps_API.doc //-v和5m之间不要有空格
- RAR 3.92 Copyright (c) 1993-2010 Alexander Roshal 10 Feb 2010
- Shareware version Type RAR -? for help
- Evaluation copy. Please register.
- Creating archive google.rar
- Adding Google_Maps_API.doc
- Calculating the control sum
- Creating archive google.part2.rar
- ... Google_Maps_API.doc
- Calculating the control sum
- Creating archive google.part3.rar
- ... Google_Maps_API.doc OK
- Calculating the control sum
- Done
- [zhangy@BlackGhost awksed]$ unrar x google.part1.rar //合并并解压
- UNRAR 3.90 freeware Copyright (c) 1993-2009 Alexander Roshal
- Extracting from google.part1.rar
- Extracting Google_Maps_API.doc
- Extracting from google.part2.rar
- ... Google_Maps_API.doc 76%
- Extracting from google.part3.rar
- ... Google_Maps_API.doc OK
- All OK
二,zip分卷压缩和合并解压
zip -h2
你会发现,分卷参数-s,意思是说分割成多大的卷
Splits (archives created as a set of split files):
-s ssize create split archive with splits of size ssize,where ssize nm
n number and m multiplier (kmgt, default m), 100k -> 100 kB
下面的意思是说如果是分卷的了,用 -s 0 --out把分卷合成一个
If input is split, output will default to same split size
Use -s=0 or -s- to turn off splitting to convert split to single file:
zip in_split_archive -s 0 --out out_single_file_archive
用zip来分卷压缩时,他必须是.zip的形势,他的流程是这样的,先把一般文件压缩成.zip的文件,然后在将.zip的文件分成多少块,如果你不这样坐呢,会提示错误的。
[zhangy@BlackGhost awksed]$ zip -s 4m Google_Maps_API.doc
zip error: Invalid command arguments (archive name must end in .zip for splits)
- [zhangy@BlackGhost awksed]$ zip google.zip Google_Maps_API.doc //先压缩不然就报上面的错
- adding: Google_Maps_API.doc(deflated 12%)
- [zhangy@BlackGhost awksed]$ zip -s 4m google.zip --out ziptest //分卷
- copying: Google_Maps_API.doc
- [zhangy@BlackGhost awksed]$ zip ziptest -s 0 --out google_bak.zip //这样合卷有问题
- copying: Google_Maps_API.doc
- [zhangy@BlackGhost awksed]$ cat ziptest.z* > google_bak.zip //利用cat来合卷 (ubuntu上有问题)
- [zhangy@BlackGhost awksed]$ unzip google_bak.zip //解压
上面呢用zip来分卷是没有问题的,但是合卷的时候就有问题了,zip -s 0 --out这样的方式,合出来的卷,大约只有分卷前的一半,这就搞的我很无语了,并且解压的时候,提示我输入密码,在次无语,只好有cat来合并了,还好合并后,解压没有任何问题。
步骤:
1. 先将目录tmp2dir压缩成 tmp2dir.zip: zip -re tmp2dir.zip tmp2dir 2. -s 32m设定分卷大小为32MB,将上一步压缩获得的文件tmp2dir.zip分卷成前缀为32test的分卷文件. zip -s 32m tmp2dir.zip --out 32test 得到的分卷文件为:包括了总卷信息压缩文件32test.zip 32test.z01 32test.z03 32test.z05 32test.z07 32test.zip 32test.z02 32test.z04 32test.z06 32test.z08 3. 将分卷压缩的文件集合32test*合并成Z32Test.zip zip 32test -s 0 --out Z32Test.zip (ubuntu上使用 cat 32test.z* > Z32Test.zip 恢复得到的文件可能会有读取错误的)
三,利用split来分卷,cat来合并分卷
我花了很长时间去研究tar的参数,研究了好长时间,还是没有找到可以分卷的参数,英语还是不过关啊,唉。不过我们可以借助split来分卷
- [zhangy@BlackGhost awksed]$ tar czvf google.tar.gz Google_Maps_API.doc
- Google_Maps_API.doc
- [zhangy@BlackGhost awksed]$ split -d -b 4m google.tar.gz
- [zhangy@BlackGhost awksed]$ cat x* > google_bak.tar.gz
- [zhangy@BlackGhost awksed]$ tar zxvf google_bak.tar.gz
- Google_Maps_API.doc