momo zone

调核人的blog

各种压缩/解压缩命令汇集

.Z


古老的Unix压缩档, 目前发行版中只有解压缩命令uncompress,而且已被gzip 取代了,系统中的uncompress其实一个bash脚本:

#!/bin/sh
PATH=${GZIP_BINDIR-‘/usr/bin’}:$PATH
exec gzip -d "$@"

实际调用的是gzip -d (gzip解压)

所以 .Z 与.gz是一样的。

umcompress filename.Z

保留原文档的解压缩命令:

umcompress –c
filename.Z >
filename


.gz

在bz2出现前使用最广泛的压缩档格式,是GNU的压缩程序,它只对单个文件进行压缩。使用gzip 压缩和gunzip(其实是gzip -d)解压缩。gunzip其实就是

#!/bin/sh
PATH=${GZIP_BINDIR-‘/bin’}:$PATH
exec gzip -d "$@"

注意,程序并不新建一个新的文件filename.gz,
而是将filename变成filename.gz

Linux压缩保留源文件的方法:

gzip –c filename > filename.gz

Linux解压缩保留源文件的方法:

gzip -d filename.gz > filenme

OR

gunzip –c filename.gz >
filename

.bz2

bzip2的主要优点在于它压缩后文件的尺寸,对于相同文件,bzip2
压缩后的尺寸几乎总是小于gzip的压缩结果。有些时候,这个差距会相当大

压缩

$ bzip2 filename

$ bzip2 -k filename #压缩后不删除原文件

解压缩

$ bunzip2 -k filename.bz2 #解压后不删除原文件

OR

$ bzip2 -d -k filename.bz2

注意,程序并不新建一个新的文件filename.bz2,
而是将filename变成filename.bz2

.tar

Unix/Linux 世界中一个历史悠久的打包程序:GNU的磁带归档程序。但现在它不是主要用于磁带了(那时候磁带可比硬盘便宜多了)。它可以将几个文件或者目录打包压缩成一个文件。这个特点让我们可以压缩整个目录树,而单使用gzip和
bzip2是无法做到的。事实上目前也都是用tar打包然后用gzip或bzip2压缩。

解包:

$ tar -xvzf filename.tar.gz
这里有不少的参数,那么它们各自有什么意思呢?
-x表示提取文件。这是一个非常重要的参数,因为它告诉tar对输入的文件具体怎么处理。在这里,我们要将打包的文件分离还原成打包前的状态。

-v表示详述。加入这个参数让程序将解包出来的每一个文件列出来。如果觉得列出来太烦了,你完全可以把这个参数去掉来关闭这个功能。相反,如果你需要每个
解包文件更详细的信息,则可以使用-vv参数。

-z是告诉tar先运行gunzip将文件解压缩。
-f是告诉tar在命令行输入的下一个串字符是需要处理的文件。

上面这个命令也可以用一些其他形式的写法。在比较老的系统里面由于缺少新版本的GNU
tar程序,你可能会看到它是写成这样的:
$ gunzip filename.tar.gz | tar -xvf –
这行命令先把文件解压缩,然后把解压的文件对输出到tar程序。gzip可以把其处理完的数据输到标准输出。这里就是把gzip解压缩的文件作为标准输出,然后由管道把文件送到tar程序进行解包。最后的
"-"表示处理标准输入。它将解包后的文件写入磁盘。

还有一种写法是将第一种命令格式的短划线去掉,像这样:
$ tar xvzf filename.tar.gz

你也可能会碰到bzip2压缩的打包文件。在SuSE所带的tar程序版本可以像gzip压缩的打包文件一样,只是要把参数-z用-j代替:
$ tar -xvjf filename.tar.bz2

这里需要注意的是,tar会把解包的文件放到当前目录。所以如果要把一个放在/tmp目录文件解压缩到你的家目录的话,这里有一些做法可供选择:

选择一,把文件拷贝到家目录,然后解包
选择二,指定需要解包文件的路径
选择三,用-C 参数指定解包后存放文件的路径

$ cd $HOME
$ cp /tmp/filename.tar.gz
$ tar -xvzf filename.tar.gz

$ cd $HOME
$ tar -xvzf /tmp/finename.tar.gz

$ cd /
$ tar -xvzf /tmp/filename.tar.gz -C $HOME

上面所有的命令都是等效的。每一种做法都是把文件解包到你的家目录,源文件则留在原来的地方。

打包:
在大多数情况下,只需要用参数"-c"代替参数"-x"就可以了:
$ tar -cvzf filename.tar.gz .
在这行命令里面,参数-c是告诉tar来建立一个打包文件;而参数-z是将打包的文件通过gzip程序进行压缩。filename.tar.gz
是你将要建立的文件名。(译者添加:命令行最后的"."是告诉tar将当前目录下的所有文件/文件夹打包)

参数"-f"不是必需的,但是通常来说加上会是一个好主意。如果不加,tar会将数据写到标准输出,这就需要管道将tar输出到另外一个程序,像这样:

$ tar -cv filename.tar . | gpg –encrypt

这行命令把当前目录下的所有文件打包建立一个没有被压缩的tar归档文件,通过管道输出到gpg程序进行加密,让不知道密钥的人无法读到文件内容。

.zip

windows 平台下早期最知名的压缩格式(尽管现在winzip这个软件包没落了)。在Linux/Unix世界中偶尔还是会遇到这种格式的。
linux下的zip软件包拥有和gzip,bzip2相同的动作和习惯,但不同的是默认动作的压缩和解压缩均不删除原文件。

压缩:
zip filename.zip filename

压缩一个目录:如压缩folder目录下所有东西(压缩后zip档放在当前目录, folder目录不变, zip档中包含完整路径)

zip -r filename.zip folder

如果要去除路径信息,只保留文件内容可以这样:
zip -jr filename.zip /folder/folder/target_folder

不过我有个习惯就是压缩档里一定有一个文件夹然后在hold 文件,这样只能用cd 切到目标路径下的上一层目录:
cd /mnt/folder/
zip -r filename.zip ./target_folder

解压缩:
unzip filename.zip

.rar

Windows 平台上的主力压缩/解压缩软件,装机必备阿(哈哈)
linux 平台上的rar工具和前述的行为和接口都不一样 ,比较另类(更接近win平台的风格)。

解压缩:

unrar e file.rar #解压到当前目录

unrar l file.rar #列出压缩档中的文件

unrar x file.rar #解压到指定目录

压缩:

openSuSE 并不包含rar 压缩程序,自己去packman 下载吧

安装完rar-{version}.rpm后,可以发现有两个版本的rar,分别是rar 和 rar2,前者压出来3.X 格式的rar档 后者压出来2.X的。

压缩单个文件:

rar a file.rar file

同样的参数也可以压缩目录 :

rar a file.rar /folder/folder/target_folder

上述方法压出来的档同样包含完整路径,如果需要去掉,需要这样做:

rar a -ep file.rar /folder/folder/target_folder

个人喜欢还是带一层文件夹:

cd /mnt/folder/folder
rar a filename.rar
./target_folder

或者

rar a -ep1 filename.rar /folder/folder/target_folder

这种做法最好。





Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: