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]

  1. [zhangy@BlackGhost awksed]$ rar a -v5m google.rar Google_Maps_API.doc  //-v和5m之间不要有空格  
  2.   
  3. RAR 3.92   Copyright (c) 1993-2010 Alexander Roshal   10 Feb 2010  
  4. Shareware version         Type RAR -? for help  
  5.   
  6. Evaluation copy. Please register.  
  7.   
  8. Creating archive google.rar  
  9.   
  10. Adding    Google_Maps_API.doc  
  11. Calculating the control sum       
  12.   
  13. Creating archive google.part2.rar  
  14.   
  15. ...       Google_Maps_API.doc  
  16. Calculating the control sum       
  17.   
  18. Creating archive google.part3.rar  
  19.   
  20. ...       Google_Maps_API.doc                                         OK  
  21. Calculating the control sum  
  22. Done  
  23. [zhangy@BlackGhost awksed]$ unrar x google.part1.rar //合并并解压  
  24.   
  25. UNRAR 3.90 freeware      Copyright (c) 1993-2009 Alexander Roshal  
  26.   
  27. Extracting from google.part1.rar  
  28.   
  29. Extracting  Google_Maps_API.doc                                            
  30.   
  31. Extracting from google.part2.rar  
  32.   
  33. ...         Google_Maps_API.doc                                       76%  
  34.   
  35. Extracting from google.part3.rar  
  36.   
  37. ...         Google_Maps_API.doc                                       OK  
  38. 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)

  1. [zhangy@BlackGhost awksed]$ zip google.zip Google_Maps_API.doc //先压缩不然就报上面的错  
  2.   adding: Google_Maps_API.doc(deflated 12%)  
  3. [zhangy@BlackGhost awksed]$ zip -s 4m google.zip --out ziptest   //分卷  
  4.  copying: Google_Maps_API.doc  
  5. [zhangy@BlackGhost awksed]$ zip ziptest -s 0 --out google_bak.zip  //这样合卷有问题  
  6. copying: Google_Maps_API.doc  
  7. [zhangy@BlackGhost awksed]$ cat ziptest.z* > google_bak.zip //利用cat来合卷  (ubuntu上有问题)
  8. [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来分卷

    1. [zhangy@BlackGhost awksed]$ tar czvf google.tar.gz Google_Maps_API.doc  
    2. Google_Maps_API.doc  
    3. [zhangy@BlackGhost awksed]$ split -d -b 4m google.tar.gz  
    4. [zhangy@BlackGhost awksed]$ cat x* > google_bak.tar.gz  
    5. [zhangy@BlackGhost awksed]$ tar zxvf google_bak.tar.gz  
    6. Google_Maps_API.doc  

 

posted @ 2018-07-23 22:15  PKICA  阅读(752)  评论(0编辑  收藏  举报