网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
资料首页最新产品 技术参数 电路图 设计应用 解决方案 代理商查询 IC替换 IC厂商 电子辞典
关键字: 技术文章 PDF资料 IC价格 电路图 代理商查询 IC替换 IC厂商 电子辞典

在 Linux 上压缩文件的 5 种方法

Linux 上压缩文件的 5 种方法
tar
tar 命令不是专门的压缩命令。它通常用于将多个文件拉入一个单个的文件中,以便容易地传输到另一个系统,或者将文件作为一个相关的组进行备份。它也提供压缩的功能,这就很有意义了,附加一个 z 压缩选项能够实现压缩文件。
当使用 z 选项为 tar 命令附加压缩过程时,tar 使用 gzip 来进行压缩。
就像压缩一组文件一样,你可以使用 tar 来压缩单个文件,尽管这种操作与直接使用 gzip 相比没有特别的优势。要使用 tar 这样做,只需要使用 tar cfz newtarfile filename 命令来标识要压缩的文件,就像标识一组文件一样,像这样:
1. $ tar cfz bigfile.tgz bigfile
2.             ^            ^
3.             |            |
4.             +- 新的文件  +- 将被压缩的文件
5.
6. $ ls -l bigfile*
7. -rw-rw-r-- 1 shs shs 103270400 Apr 16 16:09 bigfile
8. -rw-rw-r-- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz
注意,文件的大小显著减少了。
如果你愿意,你可以使用 tar.gz 扩展名,这可能会使文件的特征更加明显,但是大多数的 Linux 用户将很可能会意识到与 tgz 的意思是一样的 – tar 和 gz 的组合来显示文件是一个压缩的 tar 文件。在压缩完成后,你将同时得到原始文件和压缩文件。
要将很多文件收集在一起并在一个命令中压缩出 “tar ball”,使用相同的语法,但要指定要包含的文件为一组,而不是单个文件。这里有一个示例:
1. $ tar cfz bin.tgz bin/*
2.           ^         ^
3.           |         +-- 将被包含的文件
4.           + 新的文件
zip
zip 命令创建一个压缩文件,与此同时保留原始文件的完整性。语法像使用 tar 一样简单,只是你必需记住,你的原始文件名称应该是命令行上的最后一个参数。
1. $ zip ./bigfile.zip bigfile
2. updating: bigfile (deflated 79%)
3. $ ls -l bigfile bigfile.zip
4. -rw-rw-r-- 1 shs shs 103270400 Apr 16 11:18 bigfile
5. -rw-rw-r-- 1 shs shs  21606889 Apr 16 11:19 bigfile.zip
gzip
gzip 命令非常容易使用。你只需要键入 gzip,紧随其后的是你想要压缩的文件名称。不像上述描述的命令,gzip 将“就地”加密文件。换句话说,原始文件将被加密文件替换。
1. $ gzip bigfile
2. $ ls -l bigfile*
3. -rw-rw-r-- 1 shs shs  21606751 Apr 15 17:57 bigfile.gz
bzip2
像使用 gzip 命令一样,bzip2 将在你选择的文件“就地”压缩,不留下原始文件。
1. $ bzip bigfile
2. $ ls -l bigfile*
3. -rw-rw-r-- 1 shs shs  18115234 Apr 15 17:57 bigfile.bz2
xz
xz 是压缩命令团队中的一个相对较新的成员,在压缩文件的能力方面,它是一个领跑者。像先前的两个命令一样,你只需要将文件名称提供给命令。再强调一次,原始文件被就地压缩。
1. $ xz bigfile
2. $ ls -l bigfile*
3. -rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz
对于大文件来说,你可能会注意到 xz 将比其它的压缩命令花费更多的运行时间,但是压缩的结果却是非常令人赞叹的。
对比
大多数人都听说过“大小不是一切”。所以,让我们比较一下文件大小以及一些当你计划如何压缩文件时的问题。
下面显示的统计数据都与压缩单个文件相关,在上面显示的示例中使用 bigfile。这个文件是一个大的且相当随机的文本文件。压缩率在一定程度上取决于文件的内容。
大小减缩率
当比较时,上面显示的各种压缩命产生下面的结果。百分比表示压缩文件与原始文件的比较效果。
1. -rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile
2. ------------------------------------------------------
3. -rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2    ~17%
4. -rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz     ~21%
5. -rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz    ~21%
6. -rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz     ~13%
7. -rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip    ~21%
xz 命令获胜,最终只有压缩文件 13% 的大小,但是所有这些压缩命令都相当显著地减少原始文件的大小。
是否替换原始文件
bzip2gzipxz 命令都用压缩文件替换原始文件。tarzip 命令不替换。
运行时间
xz 命令似乎比其它命令需要花费更多的时间来加密文件。对于 bigfile 来说,大概的时间是:
1. 命令      运行时间
2. tar       4.9
3. zip       5.2
4. bzip2    22.8
5. gzip      4.8
6. xz       50.4
解压缩文件很可能比压缩时间要短得多。
文件权限
不管你对压缩文件设置什么权限,压缩文件的权限将基于你的 umask 设置,但 bzip2 除外,它保留了原始文件的权限。
Windows 的兼容性
zip 命令创建的文件可以在 Windows 系统以及 Linux 和其他 Unix 系统上使用(即解压),而无需安装其他工具,无论这些工具可能是可用还是不可用的。
解压缩文件
解压文件的命令与压缩文件的命令类似。在我们运行上述压缩命令后,这些命令用于解压缩 bigfile
◈ tar: tar xf bigfile.tgz◈ zip: unzip bigfile.zip◈ gzip: gunzip bigfile.gz◈ bzip2: bunzip2 bigfile.gz2◈ xz: xz -d bigfile.xzunxz bigfile.x
自己运行压缩对比
如果你想自己运行一些测试,抓取一个大的且可以替换的文件,并使用上面显示的每个命令来压缩它 —— 最好使用一个新的子目录。你可能需要先安装 xz,如果你想在测试中包含它的话。这个脚本可能更容易地进行压缩,但是可能需要花费几分钟完成。
1. #!/bin/bash
2.
3. # 询问用户文件名称
4. echo -n "filename> "
5. read filename
6.
7. # 你需要这个,因为一些命令将替换原始文件
8. cp $filename $filename-2
9.
10. # 先清理(以免先前的结果仍然可用)
11. rm $filename.*
12.
13. tar cvfz ./$filename.tgz $filename > /dev/null
14. zip $filename.zip $filename > /dev/null
15. bzip2 $filename
16. # 恢复原始文件
17. cp $filename-2 $filename
18. gzip $filename
19. # 恢复原始文件
20. cp $filename-2 $filename
21. xz $filename
22.
23. # 显示结果
24. ls -l $filename.*
25.
26. # 替换原始文件
27. mv $filename-2 $filename


热门搜索:PDUMV20 TRAVELER3USB SS3612 BT137S-600D118 UL603CB-6 02T0500JF LC1800 LC2400 SBB2805-1 BT151S-800R118 1301380020 LC1200 PS361220 SBBSM2120-1 TLM815NS SBB1005-1 TLP810NET 2320351 2839240 TLP808TEL 2320335 SUPER6OMNI D TLP1008TEL PDU2430 UL24CB-15
COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
客户服务:service@IC72.com 库存上载:IC72@IC72.com
(北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质