Linux中文件的压缩与解压缩

658阅读 0评论2008-03-19 sdccf
分类:LINUX

对许多用户来说,在DOS和Windows环境下利用工具软件ARJ、Winzip等,压缩或解压文件是比较容易的事。但是,在Linux中如何对文件进行压缩与解压呢?本文基于Red Hat 6.0,介绍了压缩与解压文件的几种方法与技巧:

命令: compress 

格式: compress 选项 文件列表 
功能: 用Lempel-ziv压缩方法来压缩文件或压缩标准输入 

选项: 

-r 递归操作,如果指定目录变元,则压缩该目录及其子目录中的所有文件。
-c 将压缩数据返回标准输出,而缺省情况下为压缩文件时将压缩数据返回文件。
-v 显示每个文件夹的压缩百分比。 

解释: 在用compress压缩文件时,将在原文件名之后加上扩展名.Z。如果不指定文件,则压缩标准输入,其结果返回标准输出。 

实例: 目的:压缩/mnt/lgx/a1.doc文件
命令:#compress /mnt/lgx/a1.doc
结果:压缩后生成a1.doc.Z文件。

命令: uncompress

格式: uncompress 选项 文件列表 
功能: 解压缩用compress 程序压缩过的文件 
选项: -c 它将压缩数据发往标准输出而不是改写旧的压缩文件 
解释: 如果不指定文件,则解压缩标准输入。缺省-c时,为解压缩。 
实例: 目的:解压缩/mnt/lgx/a1.doc.Z
命令:#uncompress /mnt/lgx/a1.doc.Z

命令: gzip

格式: gzip 选项 文件目录列表 
功能: 用Lempel-ziv编码压缩文件 

选项: 

-c 压缩结果写入标准输出,原文件保持不变。缺省时gzip将原文件压缩为.gz文件,并删除原文件。
-v 输出处理信息。
-d 解压缩指定文件。
-t 测试压缩文件的完整性。 

解释: 值得一提的是,gzip比compress压缩更加有效。 
实例: 目的:压缩/mnt/lgx/a1.doc
命令:#gzip -v /mnt/lgx/a1.doc
结果:产生a1.doc.gz的压缩文件

命令: gunzip 

格式: gunzip 选项 文件列表 
功能: 解压缩用gzip命令(以及compress和zip命令)压缩过的文件 

选项: 

-c 将输出写入标准输出,原文件保持不变。缺省时,gunzip将压缩文件变成解压缩文件。
-l 列出压缩文件中的文件而不解压缩。
-r 递归解压缩,深入目录结构中,解压缩命令行变元所指定目录中的所有子目录内的文件。 

实例: 目的:解压缩/mnt/lgx/a1.doc.gz
命令:#gunzip /mnt/lgx/a1.doc.gz

命令: tar 

格式: tar 选项 文件目录列表 
功能: 对文件目录进行打包备份 

选项: 

-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
-O 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩

实例1: 目的:用tar打包一个目录下的文件
命令:#tar -cvf /mnt/lgx/a1.doc
结果:产生一个以.tar为扩展名的打包文件

实例2: 目的:用tar解开打包文件
命令:#tar -xvf /mnt/lgx/a1.doc.tar
附加说明:在通常情况下,tar打包与gzip(压缩)经常联合使用,效果更好。方法是:
首先用tar打包,如:#tar -cvf /mnt/lgx/a1.doc (产生a1.doc.tar文件)
然后用gzip压缩a1.doc.tar文件,如:#gzip /mnt/lgx/a1.doc.tar (产生a1.doc.tar.gz文件)

实例3: 目的:解压a1.doc.tar.gz文件
方法1:
#gzip -dc /mnt/lgx/a1.doc.tar.gz (产生a1.doc.tar文件)
#tar -xvf /mnt/lgx/a1.doc.tar (产生a1.doc文件)
这两次命令也可使用管道功能,把两个命令合二为一:
#gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf
方法2:使用tar提供的自动调用gzip解压缩功能
#tar -xzvf /mnt/lgx/a1.doc.tar.gz

  经过tar打包后,也可用compress命令压缩(注:gzip比compress压缩更加有效),产生一个以.tar.Z的文件,在解包时,可先用“uncompress 文件名”格式解压,然后用“tar -xvf 文件名”解包。也可直接调用“tar -Zxvf 文件名”解包。

处理 .zip 文件的 zip 和 unzip

  zip 和 unzip 程序位于 /usr/bin 目录中,它们和 MS - DOS 下的 pkzip、pkunzip 以及 MS-windows 的 Winzip 软件功能一样、可将文件压缩成 .zip 文件以节省硬盘空间,而当需要的时候再将压缩文件解开。

  压缩文件的 zip 命令

  zip 可用来压缩文件,如果我们有许多文件需要做压缩,甚至可以将它们一并处理并压缩成一个文件。以下是 zip 的语法以及可用的参数介绍 :

  其实 zip 最常用的方法是在后面加上压缩后的文件名,以及要压缩的文件即可。

  因为 zip 命令在许多 OS 平台都有,而且参数相当多,在此我只介绍一些 Linux 上适用的参数 :

-1 : 最快压缩,压缩率最差。

-9 : 最大压缩,压缩率最佳。

-b : 暂存文件的路径。这个参数一般在要产生的 zip 文件存在,而硬盘现有空间不足时。

-c : 替新增或更新的文件增加一行注解。

-d : 从 zip 文件移出一个文件。

-D : 不要在 zip 文件中储存文件的目录信息。

-f : 以新文件取代现有文件。

-F : 修复已经损毁的压缩文件。

-g : 将文件压缩附加到 zip 文件中。

-h : 显示辅助说明。

-i : 指定要含入的某些特定文件。

-j : 只储存文件的名称,不含目录。

-k : 强迫使用 MSDOS 格式文件名。

-l : 将 CR ( Carriage Return ) LF ( Line Feed ) 转换成 LF,一般是要将 MS-DOS 上的文本文件压缩后拿到 UNIX 下使用时才使用此参数。这只适用于文本文件 ( .txt ),如果用于二进制文件则会造成二进制文件损毁。

-L : 显示 zip 命令的版权。

-m : 将特定文件移入 zip 文件中,并且删除特定文件。

-n : 不压缩特定扩展名的文件。

-o : 将 zip 文件的时间设成最后修正 zip 文件的时间。

-q : 安静模式,不会显示相关讯息和提示。

-r : 包括子目录。

-t : 只处理 mmddyy 日期以后的文件。

-T : 测试 zip 文件是否正常。

-u : 只更新改变过的文件和新文件。

-v : 显示版本资讯或详细讯息。

-x : 不需要压缩的文件。

-y : 将 symbolic link 压缩,而不是压缩所连结到的文件。

-z : 为 zip 文件增加注解。

-# : 设定压缩速度,-0 表示不压缩,-1 表示最快速度的压缩,

-9 表示最慢速度的压缩 ( 最佳化的压缩 ),预设值为 -6。

-@ : 从标准输入读取文件名称。

  解开压缩文件的 unzip 命令

  unzip 命令用于解开 .zip 文件,unzip 命令的语法和 zip 类似,参数在这里就不一一赘述了。

打包文件的 tar

  tar 程序位于 /usr/bin 目录中,一般 UNIX 上常用的压缩方式是先用 tar 将许多文件 ( 可能含有子目录 )打包成一个文件 ( gzip、compess 只能压缩一个文件 ),以 gzip 第 2 次压缩成 xxx.tar.gz ( 或称为 xxx.tgz ) 的文件。

  因为 tar 参数繁多,我先介绍 tar 的常用法 :

paul : ~/tar cvf filesname.tar <- 将所有文件包装成 filesname.tar,注意扩展名 .tar自行加上。

paul : ~/tar cvzf filesname.tar.gz <- 将所有文件包装成 filesname.tar,再用 gzip 压缩。

paul : ~/tar tvf filesname.tar <- 检查 filesname.tar 文件中包括了哪些文件。

paul : ~/tar xvf filesname.tar <- 将 filesname.tar 解开。

KDE 的 archiver

KDE 的 archiver 就像 MS-wondows 的 winzip,也能把 zip、gzip、tar、tar.gz 等的压缩文件解开。

上一篇:vi使用手册
下一篇:Linux 的权限