Linux文件打包和压缩命令总结

每次在linux解压文件都要去网上查一次,因为记不住后面跟的参数(原因还是不理解这些参数的意思)。所以总结解压命令。

tar命令

首先,tar是一个打包工具,并不是一个压缩工具,tar的压缩功能是调用了别的工具来实现的。

tar命令的用法是 tar [function] [option] pathname。其中必须选择一个function,相当于是指定tar的任务。function可以用简写首字母,可以与后面的option混用(所以之前我都不知道有个function的存在,以为都是option)。所有的function支持见下表。比如说,如果要创建一个归档文件,就用tar -c,如果是从归档中提取文件,就是tar -x

FUNCTION LETTERS
Main operation mode:

-A, –catenate, –concatenate
append tar files to an archive

-c, –create
create a new archive

-d, –diff, –compare
find differences between archive and file system

–delete
delete from the archive (not on mag tapes!)

-r, –append
append files to the end of an archive

-t, –list
list the contents of an archive

–test-label
test the archive volume label and exit

-u, –update
only append files newer than copy in archive

-x, –extract, –get
extract files from an archive

然后是options,其中有一个option(-f)是必须的,就是指定使用的归档。而且这个参数后面需要跟一个文件名字,所以一般都把它放在tar的最后一个参数上。例如打包文件的命令就是tar -cf new.tar。其中第一个c是函数名,可以和后面的option组合。文件名的后缀是为了好识别,不加也可以(推荐加,不然你就不知道一个文件是文件还是归档了)。

常用的参数如下:

  • -p或–same-permissions:用原来的文件权限还原文件
  • -v:列出处理过的文件,显示运行过程还是挺好的
  • -j, –bzip2:后缀是.bz2形式的压缩
  • -J, –xz:后缀是xz形式的压缩
  • -z, –gzip:后缀是gz形式的压缩

综上,打包一个文件的命令就是:tar -cvzf file.tar.gz dir,解压文件的命令就是tar -xvf file.tar.gz

我有一点不理解的是,网上的解压命令基本上都是带-z参数的,即tar -xzvf file.tar.gz,但是我尝试了一下不指定解压器也是能工作的,不知道为什么网上都这么说。到论坛问了一下,原来之前版本的tar是不能自动识别压缩编码的,现在已经可以自动识别了,不需要加zjJ任何参数了。

zent00 :早期版本的 tar 无法自动判断文件所使用的压缩算法,所以需要指定 z 或 j,现代版本的 tar 都可以识别了,所以不需要指定 z j J

gstqc压缩必须指定压缩格式
g: gzip
j: bz2
J: xz

解压以前需要指定压缩格式,现在新版本不需要,加不加 -a 参数都会自动判断格式

所以对于 gz 格式的解压,在新版 tar 上,以下命令全部等价
tar -zxf
tar zxf
tar -xf
tar xf
tar -axf
tar axf

不过,规范一点更好,写脚本的时候,统一使用 tar -zxf 或者 tar -axf 这些参数,免得出 bug

所以还是用Linux比较晚……会遇到一些奇奇怪怪的问题……

zip文件的压缩和解压

另一种跨平台的压缩格式是.zip。这种格式的文件相关的命令是zipunzip。通过下面几个例子了解一下,用的时候查man就可以。

  1. 递归压缩 zip -r yasuo.zip abc.txt dir1
  2. 解压 unzip yasuo.zip
  3. 查看压缩文件内的内容,但是不解压 unzip -v large.zip
  4. 验证下载文件的正确性 unzip -t large.zip

参考资料

  1. Linux manual:https://linux.die.net/man/1/tar
  2. http://www.vixual.net/blog/archives/127
  3. http://man.linuxde.net/tar
  4. https://www.cnblogs.com/chinareny2k/archive/2010/01/05/1639468.html


Linux文件打包和压缩命令总结”已经有2条评论

回复 David Gu 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注