在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
所谓压缩就是将原有的文件通过不同的编码技术进行运算,以减少数据存储所需要的空间,使用前再利用解压缩还原源文件的内容即可。 1、zip压缩与解压缩 复制代码 代码如下:xiaopeng@ubuntu:~/test$ zip Copyright (c) 1990-2006 Info-ZIP - Type 'zip "-L"' for software license. Zip 2.32 (June 19th 2006). Usage: zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list] The default action is to add or replace zipfile entries from list, which can include the special name - to compress standard input. If zipfile and list are omitted, zip compresses stdin to stdout. -f freshen: only changed files -u update: only changed or new files -d delete entries in zipfile -m move into zipfile (delete files) -r recurse into directories -j junk (don't record) directory names -0 store only -l convert LF to CR LF (-ll CR LF to LF) -1 compress faster -9 compress better -q quiet operation -v verbose operation/print version info -c add one-line comments -z add zipfile comment -@ read names from stdin -o make zipfile as old as latest entry -x exclude the following names -i include only the following names -F fix zipfile (-FF try harder) -D do not add directory entries -A adjust self-extracting exe -J junk zipfile prefix (unzipsfx) -T test zipfile integrity -X eXclude eXtra file attributes -y store symbolic links as the link instead of the referenced file -R PKZIP recursion (see manual) -e encrypt -n don't compress these suffixes 下面我们就最简单的实验一下。我们就是把当前目录下文件名以test开头的所有文件压缩文一个文件,并可以查看一下压缩比。(红色是我的注释) 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -lh 总用量 24K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 复制代码 代码如下:xiaopeng@ubuntu:~/test$ zip test.zip test* zip命令后面先跟压缩后的文件名,这里是test.zip,当然后缀名不是必须的。然后跟要压缩的文件名。这里用的test*指的是全部以test开头的文件,包括test1 test2 test3 test4 adding: test1 (deflated 30%) 这里显示的是压缩比 adding: test2 (deflated 65%) adding: test3 (deflated 64%) adding: test4 (deflated 73%) 大体可以看出源文件越大,压缩比就越大 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -lh 总用量 32K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 -rw-r--r-- 1 xiaopeng xiaopeng 5.0K 2009-06-25 14:17 test.zip xiaopeng@ubuntu:~/test$ 上面是压缩了相同类型的文件,其实也可以把不同类型的文件压缩到一起。有时候为了节省硬盘空间,可以在建立压缩文件后,自动删除原始文件,此时只要带一个 -m 的参数就可以。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -lh 总用量 24K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 xiaopeng@ubuntu:~/test$ zip -m test.zip test* 带参数-m updating: test1 (deflated 30%) updating: test2 (deflated 65%) updating: test3 (deflated 64%) updating: test4 (deflated 73%) xiaopeng@ubuntu:~/test$ ls -lh 总用量 8.0K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 5.0K 2009-06-25 14:26 test.zip xiaopeng@ubuntu:~/test$ 可以看出 原始文件已经被删除,只有压缩文件留下了。 在压缩一些目录的时候,经出在目录中会有子目录,此时根据子目录中的文件是否压缩分为两种情况,一种是压缩,一种是忽略自录中的内容,如果选择压缩子目录,则使用-r参数,如果不压缩,则使用-j 参数 下面举例,一个是-r 一个是-j 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -lh 总用量 28K 复制代码 代码如下:drwxr-xr-x 2 xiaopeng xiaopeng 4.0K 2009-06-25 14:31 pdf -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 xiaopeng@ubuntu:~/test$ zip -r test.zip * 压缩当前目录所有内容,r 参数说明pdf这个子目录中的内容也压缩 adding: pdf/ (stored 0%) adding: pdf/case_Contact.pdf (deflated 10%) adding: pdf/case_KRUU.pdf (deflated 9%) adding: pdf/case_howard_county_library.pdf (deflated 24%) adding: test1 (deflated 30%) adding: test2 (deflated 65%) adding: test3 (deflated 64%) adding: test4 (deflated 73%) xiaopeng@ubuntu:~/test$ 下面的情况是子目录不压缩 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -l 总用量 28 复制代码 代码如下:drwxr-xr-x 2 xiaopeng xiaopeng 4096 2009-06-25 14:31 pdf -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1233 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3412 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 10091 2009-06-25 14:14 test4 xiaopeng@ubuntu:~/test$ zip -j test.zip * adding: test1 (deflated 30%) adding: test2 (deflated 65%) adding: test3 (deflated 64%) adding: test4 (deflated 73%) 子目录pdf被忽略 复制代码 代码如下:xiaopeng@ubuntu:~/test$ 令外一个技巧: 某些文件因为编码的原因,已经大幅的减少了文件的大小,如GIF,JPG 等格式,在用zip压缩几乎没什么作用而浪费了时间,此时可一用-n参数直接保存这些文件而不压缩。例如: 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -lh 总用量 68K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 18K 2009-06-04 21:18 duality.jpg -rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 -rw-r--r-- 1 xiaopeng xiaopeng 23K 2009-06-10 15:07 test.jpg xiaopeng@ubuntu:~/test$ zip -n .jpg test.zip * adding: duality.jpg (stored 0%) adding: test1 (deflated 30%) adding: test2 (deflated 65%) adding: test3 (deflated 64%) adding: test4 (deflated 73%) adding: test.jpg (stored 0%) jpg格式的没有压缩而是直接保存了 复制代码 代码如下:xiaopeng@ubuntu:~/test$ 如果需要直接保存的格式多于一个,可以用冒号隔开 如: -n .jpg: .mpg 小技巧,有时候一个目录下要压缩的文件很多,但是有那么很少的几个不压缩,那么我们可以用-x参数来排除这几个不压缩的。例如 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls duality.jpg test1 test2 test3 test4 test.jpg test.zip xiaopeng@ubuntu:~/test$ zip -n .jpg test.zip * -x test2 不压缩test2 updating: duality.jpg (stored 0%) updating: test1 (deflated 30%) updating: test3 (deflated 64%) updating: test4 (deflated 73%) updating: test.jpg (stored 0%) xiaopeng@ubuntu:~/test$ 可以看到test2没有被压缩,而是直接跳过了它。 压缩链接,zip会先读取该链接的指向的原文件的内容,然后再压缩,而且压缩完了,该链接也就不存在了。 另外,压缩率也是可以调整的。等级是1到9,1最低,9最高,默认是6 。我们可以用1和9来比较下,压缩率。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ zip -1 low.zip * adding: test1 (deflated 30%) adding: test2 (deflated 63%) adding: test3 (deflated 62%) adding: test4 (deflated 70%) xiaopeng@ubuntu:~/test$ zip -9 high.zip * adding: low.zip (deflated 4%) adding: test1 (deflated 30%) adding: test2 (deflated 65%) adding: test3 (deflated 64%) adding: test4 (deflated 73%) 因为文件都比较小,效果不是很明显,但是9的压缩率确实高了一点点。 压缩率高,节省空间,但是压缩时间要长,压缩率低,节省空间少,但是用时间少,所以我们要合理选择压缩率,一般都用默认。 zip文件解压缩。这个比较简单,就是unzip命令。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls test.zip xiaopeng@ubuntu:~/test$ unzip test.zip Archive: test.zip inflating: test1 inflating: test2 inflating: test3 inflating: test4 xiaopeng@ubuntu:~/test$ 当然也可以用-x参数来指定哪个文件不需要压缩。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ unzip test.zip -x test3 test3不需要压缩出来 Archive: test.zip inflating: test1 inflating: test2 inflating: test4 xiaopeng@ubuntu:~/test$ 还有一个很有用的参数,-Z ,注意是大写的Z 。作用是查看压缩文件的内容。就像windows中的winzip,我们不用解压缩,也可以打开看看里面有什么文件,文件的类型什么。比如我想看看test.zip里面的内容,而又不想把这个解压缩了再看,可以如下操作。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ unzip -Z test.zip Archive: test.zip 5069 bytes 4 files -rw-r--r-- 2.3 unx 212 tx defN 25-Jun-09 14:13 test1 -rw-r--r-- 2.3 unx 1233 tx defN 25-Jun-09 14:13 test2 -rw-r--r-- 2.3 unx 3412 tx defN 25-Jun-09 14:14 test3 -rw-r--r-- 2.3 unx 10091 tx defN 25-Jun-09 14:14 test4 4 files, 14948 bytes uncompressed, 4567 bytes compressed: 69.4% xiaopeng@ubuntu:~/test$ 当然除了这些参数外,还有很多参数可以使用,这里就不一一实验了,我们可以在使用的过程中加以掌握。 2、zip与 tar 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls -lh 总用量 24K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 15:49 test1 -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 xiaopeng@ubuntu:~/test$ gzip test1 xiaopeng@ubuntu:~/test$ ls -lh 总用量 24K 复制代码 代码如下:-rw-r--r-- 1 xiaopeng xiaopeng 173 2009-06-25 15:49 test1.gz -rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2 -rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3 -rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4 注意和zip的不同,只要在命令后加上要压缩的文件名即可,系统会自动为生成的压缩文件起名为原文件名加后缀.gz ,而且原文件在压缩完成后会被删除。 解压缩用gunzip 复制代码 代码如下:xiaopeng@ubuntu:~/test$ gunzip *.gz xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 xiaopeng@ubuntu:~/test$ 完成后以前的压缩文件test1.gz也会被删除。 同样gzip在解压前也可以查看文件内容,用参数-l, gzip也支持压缩率修改,为1到9,和zip相同。 下面看tar的用应。tar是用来打包文件的,打包后的包的大小和以前所有原文件大小的和是相等的,(其实大小是不相等的,打完包后的大小大于源文件的大小和,这个可以验证一下。《Ubuntu 入门到精通》说一样大,显然是不对的)也就是说tar没有压缩的效果。tar有非常多的参数,可以通过在线帮助文档查看,或者用--help命令查看。这里我们只用简单用到几个。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 xiaopeng@ubuntu:~/test$ tar -cvf test.tar * 是把当前目录下的所有文件打包成test.tar 几个参数的意义为: c(Creat)建立新文件 v(Verbose)显示命令执行时的信息 f(File)指定打包为文件形式。 复制代码 代码如下:test1 test2 test3 test4 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 test.tar xiaopeng@ubuntu:~/test$ 要解开tar文件,只需把参数中的c改为x(eXtract)即可 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls test.tar xiaopeng@ubuntu:~/test$ tar -xvf test.tar test1 test2 test3 test4 xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 test.tar xiaopeng@ubuntu:~/test$ 下面我们看一下tar和gzip合作完成对4个文件的压缩。步骤是先用tar打包,然后对这个.tar包用gzip压缩,最后得到.tar.gz文件。例子: 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 xiaopeng@ubuntu:~/test$ tar cvf test.tar * 首先打包成test.tar test1 test2 test3 test4 xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 test.tar xiaopeng@ubuntu:~/test$ gzip test.tar 把test.tar用gzip压缩成test.tar.gz 压缩包。 xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 test.tar.gz xiaopeng@ubuntu:~/test$ 解压.tar.gz包时,和压缩过程相反,现解压,再tar把包打开。 复制代码 代码如下:xiaopeng@ubuntu:~/test$ ls test.tar.gz xiaopeng@ubuntu:~/test$ gunzip test.tar.gz 先用gunzip把.tar.gz包解压缩 xiaopeng@ubuntu:~/test$ ls test.tar xiaopeng@ubuntu:~/test$ tar xvf test.tar 然后用tar把.tar包打开 test1 test2 test3 test4 xiaopeng@ubuntu:~/test$ ls test1 test2 test3 test4 test.tar xiaopeng@ubuntu:~/test$ 还可以tar 和gzip同时实现的,只要在tar参数加一个z即可 tar -xvfz test.tar.gz 即可实现上面两个命令的功能。 还是比较好理解的。 |
请发表评论