Linux下常用的文件归档,压缩和解压缩命令
命令 常见后缀 程序所在目录
compress / uncompress .Z .tar.Z /usr/bin
bzip2 / bunzip2 .bz .bz2 .tbz .tbz2 /bin
gzip / gunzip .gz .tar.gz .tgz /bin
zip / unzip .zip /usr/bin
tar
compress / uncompress
最初最简单的压缩指令,压缩后文件后缀名为 .Z
常见与早期类UNIX系统中,目前使用较少。compress -d 等同与uncompress(在许多版本的linux中,uncompress其实调用的是compress -d,而自己并不是一个真的程序)。
所有参数:
-d 解压
-c 输出压缩或解压的结果,并不删除原始文件。
-f 强迫写入档案,若目的档已经存在,则会被覆盖 (force)
-v 显示进度
-b 最大比特数(数字越大,压缩率越高,范围是 9-16 ,预设值是 16)
-V 显示版本信息
-r 递归压缩文件夹及其子文件
eg:
compress -vf foobar.bat 强制压缩并显示进度,若目标文档存在则覆盖(删除原始文件)
compress -dv foobar.bat.Z 解压并显示进度
compress -dc foobar.bat.Z 解压并显示解压内容
compress -b 12 foobar.dat
compress -c foobar.bat > newName.bat.Z 将压缩后的资料输出后再导入指定名称压缩包
bzip2 / bunzip2
常用参数:
-c 输出压缩或解压的结果
-z 压缩
-d 解压(等同与bunzip2命令)
-k 保留原文件
-v 显示进度
-f 强制执行,目标文件存在则覆盖
-1 .. -9 压缩比的参数, -9 最佳, -1 最快
--fast alias for -1
--best alias for -9
eg:
bzip2 foo.bat 压缩foo.bat为foo.bat.bz2,并不保留原文件
bzip2 -zfk foo.txt 强制压缩,并保留源文件
bzip2 -zf -9 -c foo.txt > bar.txt.bz2 强制压缩,最大压缩率,更改名称并保留源文件
bzcat foobar.bz2 查看压缩包内容,而不解压
gzip / gunzip
gunzip甚至还可以去解其他压缩程序如 Compress 或 ZIP 压缩出来的文件,但并不赞同这样做。
常用参数同上(没有-k)
zip -- 打包并压缩
其格式与windows中.zip格式完全一致,可通用,适合与windows通讯使用。
实用参数:
-d 删除(drop)
-g 添加(group)
-u 更新
-r 递归压缩
-t 测试有无损坏,不解压
-q 安静模式
* 包含系统文件和隐藏文件
eg:
zip -r all.zip foo.zip bar.bat /home/user1 压缩本目录下foo.zip、bar.bat和/home/user1/文件夹为all.zip
zip new1.zip my1*.doc 压缩my1*.doc为new1.zip,new1.zip 可简写成 new1,系统会自行默认 .zip扩展名。
zip -d new1.zip my18.doc 删除new1.zip中my18.doc
zip -g new1.zip my32.doc 往 new1.zip中加入my32.doc
zip -u new1.zip my2*.doc 更新new1.zip中my2*.doc
zip -r new2.zip mydir 压缩mydir目录为new2.zip
zip -q -r all.zip * 压缩本文件夹所有(包括系统文件和隐藏文件夹)
unzip -- 解压
zip只能打包压缩,unzip才是解压命令,实实在在的真正的程序。
常用参数(所指为更新内容):
-d 解压到制定目录
-v/l 查看压缩的文件,不解压
-f 更新已存在
-n 更新不存在
-u 全部
-o 直接覆盖,不询问
-fo 直接覆盖已存在
-uo 覆盖更新所有
-C 不计大小写
-L 一律将文件名转为小写
-j 去除文件夹
eg:
unzip foo.zip 解压foo.zip到当前目录
unzip -n text.zip -d /tmp 解压test.zip到/tmp,仅更新不存在
unzip -j all.zip -d /tmp 加压all.zip到/tmp,去除文件夹
unzip onepackage.zip a*.doc 解压 onepackage.zip 内 a*.doc 的文件
tar -- 归档打包
参数:
-c 产生新文件(create);
-x 解压
-t 查看
注意,参数 c/x/t 仅能存在一个,不可同时存在
-z gzip属性
-Z compress属性
-j bzip属性
-f 使用档名,注意,在 f 之后要立即接档名,不要再加参数。(我们可以将-f看成一个必加参数)
tar -zcvfP tfile sfile -- 错误
tar -zcvPf tfile sfile -- 正确
-u 更新某个文件
-r 增加某个文件
-p 使用原文件的原来属性(属性不会依据使用者而变)
-P 可以使用绝对路径来压缩
-N 比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中
--exclude file 在压缩的过程中,不要将 file 打包
eg:
tar -cf new1.tar my1*.doc 把所有 my1*.doc 的文件打包为 new1.tar
tar -rf new1.tar my2*.doc 向new1.tar中增加 my2*.doc
tar -uf new1.tar my18.doc 修改......
tar -tf new1.tar 列出...
tar -xf new1.tar 解压...
tar -zxvf onepackage.tar.gz 解压(传说中的神奇解压命令)
tar -zcvf /tmp/etc.tar.gz /etc 打包后,以 gzip 压缩
tar -zxvf /tmp/etc.tar.gz etc/passwd 指定目录解压
主要参考文章:
http://blog.sina.com.cn/s/blog_4fd24c7201000duj.html
http://www.linuxso.com/command/unzip.html
http://www.douban.com/note/57861194/
notice:
本人linux小白一枚,这篇文章学习总结之用,谬误肯定有不少,路过的道友切莫盲信本文内容。若能指出错误,当然更是非常感谢!