linux环境如何压缩文件,如何在 Linux 使用文件压缩
Linux 系统为文件压缩提供了许多选择,关键是选择一个最适合你的。
如果你对可用于 Linux 系统的文件压缩命令或选项有任何疑问,你也许应该看一下 apropos compress 这个命令的输出。如果你有机会这么做,你会惊异于有如此多的的命令来进行压缩文件和解压缩文件;此外还有许多命令来进行压缩文件的比较、检验,并且能够在压缩文件中的内容中进行搜索,甚至能够把压缩文件从一个格式变成另外一种格式(如,将 .z 格式变为 .gz 格式 )。
你可以看到只是适用于 bzip2 压缩的全部条目就有这么多。加上 zip、gzip 和 xz 在内,你会有非常多的选择。
$ apropos compress|grep^bz
bzcat(1)-decompresses files to stdout
bzcmp(1)-compare bzip2 compressed files
bzdiff(1)-compare bzip2 compressed files
bzegrep(1)-search possibly bzip2 compressed filesfora regular expression
bzexe(1)-compress executable filesinplace
bzfgrep(1)-search possibly bzip2 compressed filesfora regular expression
bzgrep(1)-search possibly bzip2 compressed filesfora regular expression
bzip2(1)-a block-sortingfilecompressor,v1.0.6
bzless(1)-fileperusal filterforcrt viewing of bzip2 compressed text
bzmore(1)-fileperusal filterforcrt viewing of bzip2 compressed text
在我的 Ubuntu 系统上 ,apropos compress 命令的返回中列出了 60 条以上的命令。
压缩算法
压缩并没有普适的方案,某些压缩工具是有损压缩,例如一些压缩用于减少 mp3 文件大小,而能够使聆听者有接近原声的音乐感受。但是在 Linux 命令行上压缩或归档用户文件所使用的算法必须能够精确地重新恢复为原始数据。换句话说,它们必须是无损的。
这是如何做到的?让我们假设在一行上有 300 个相同的字符可以被压缩成像 “300x” 这样的字符串,但是这种算法对大多数文件没有很大的用处,因为文件中不可能包含长的相同字符序列比完全随机的序列更多。 压缩算法要复杂得多,从 Unix 早期压缩首次被引入以来,它就越来越复杂了。
在 Linux 系统上的压缩命令
在 Linux 系统上最常用的文件压缩命令包括 zip、gzip、bzip2、xz。 所有这些压缩命令都以类似的方式工作,但是你需要权衡有多少文件要压缩(节省多少空间)、压缩花费的时间、压缩文件在其他你需要使用的系统上的兼容性。
有时压缩一个文件并不会花费很多时间和精力。在下面的例子中,被压缩的文件实际上比原始文件要大。这并不是一个常见情况,但是有可能发生——尤其是在文件内容达到一定程度的随机性。
$timezip bigfile.zip bigfile
adding:bigfile(default0%)
real0m0.055s
user0m0.000s
sys0m0.016s
$ls-l bigfile*
-rw-r--r--1root root012月2022:36bigfile
-rw-------1root root16412月2022:41bigfile.zip
注意该文件压缩后的版本(bigfile.zip)比原始文件(bigfile)要大。如果压缩增加了文件的大小或者减少很少的比例,也许唯一的好处就是便于在线备份。如果你在压缩文件后看到了下面的信息,你不会从压缩中得到什么受益。
(defalted1%)
文件内容在文件压缩的过程中有很重要的作用。在上面文件大小增加的例子中是因为文件内容过于随机。压缩一个文件内容只包含 0 的文件,你会有一个相当震惊的压缩比。在如此极端的情况下,三个常用的压缩工具都有非常棒的效果。
-rw-rw-r--1shs shs10485760Dec812:31zeroes.txt
-rw-rw-r--1shs shs49Dec817:28zeroes.txt.bz2
-rw-rw-r--1shs shs10219Dec817:28zeroes.txt.gz
-rw-rw-r--1shs shs1660Dec812:31zeroes.txt.xz
-rw-rw-r--1shs shs10360Dec812:24zeroes.zip
令人印象深刻的是,你不太可能看到超过 1000 万字节而压缩到少于 50 字节的文件, 因为基本上不可能有这样的文件。
在更真实的情况下 ,大小差异总体上���不同的,但是差别并不显著,比如对于确实不太大的 jpg 图片文件来说。
-rw-r--r--1shs shs13522Dec1118:58image.jpg
-rw-r--r--1shs shs13875Dec1118:58image.jpg.bz2
-rw-r--r--1shs shs13441Dec1118:58image.jpg.gz
-rw-r--r--1shs shs13508Dec1118:58image.jpg.xz
-rw-r--r--1shs shs13581Dec1118:58image.jpg.zip
在对大的文本文件同样进行压缩时 ,你会看到显著的不同。
$ls-l textfile*
-rw-rw-r--1shs shs8740836Dec1118:41textfile
-rw-rw-r--1shs shs1519807Dec1118:41textfile.bz2
-rw-rw-r--1shs shs1977669Dec1118:41textfile.gz
-rw-rw-r--1shs shs1024700Dec1118:41textfile.xz
-rw-rw-r--1shs shs1977808Dec1118:41textfile.zip
在这种情况下 ,xz 相较于其他压缩命令有效的减小了文件大小,对于第二的 bzip2 命令也是如此。
查看压缩文件
这些以 more 结尾的命令(bzmore 等等)能够让你查看压缩文件的内容而不需要解压文件。
bzmore(1)-fileperusal filterforcrt viewing of bzip2 compressed text
lzmore(1)-view xzorlzma compressed(text)files
xzmore(1)-view xzorlzma compressed(text)files
zmore(1)-fileperusal filterforcrt viewing of compressed text
为了解压缩文件内容显示给你,这些命令做了大量的计算。但在另一方面,它们不会把解压缩后的文件留在你系统上,它们只是即时解压需要的部分。
$ xzmore textfile.xz|head-1
Hereisthe agendafortomorrow's staff meeting:
比较压缩文件
有几个压缩工具箱包含一个差异命令(例如 :xzdiff),那些工具会把这些工作交给 cmp 和 diff 来进行比较,而不是做特定算法的比较。例如,xzdiff 命令比较 bz2 类型的文件和比较 xz 类型的文件一样简单 。
如何选择最好的 Linux 压缩工具
如何选择压缩工具取决于你工作。在一些情况下,选择取决于你所压缩的数据内容。在更多的情况下,取决你组织内的惯例,除非你对磁盘空间有着很高的敏感度。下面是一般性建议:
zip 对于需要分享给或者在 Windows 系统下使用的文件最适合。
gzip 或许对你要在 Unix/Linux 系统下使用的文件是最好的。虽然 bzip2 已经接近普及,但 gzip 看起来仍将长期存在。
bzip2 使用了和 gzip 不同的算法,并且会产生比 gzip 更小的文件,但是它们需要花费更长的时间进行压缩。
xz 通常可以提供最好的压缩率,但是也会花费相当长的时间。它比其他工具更新一些,可能在你工作的系统上还不存在。
注意
在压缩文件时,你有很多选择,而在极少的情况下,并不能有效节省磁盘存储空间。
本文由 LCTT原创编译,Linux中国 荣誉推出
linux环境如何压缩文件,如何在 Linux 使用文件压缩相关推荐
- 如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?
在如今多租户模式的数据中心环境下,虚拟化技术正从传统的基于虚拟机管理程序的服务器虚拟化,扩展到网络虚拟化.在这种环境下,基于软件的虚拟交换机通常连同虚拟机管理程序一起部署在服务器上,串联起了不同虚拟机 ...
- LINUX环境下资源下载中文目录及中文文件名称问题
为什么80%的码农都做不了架构师?>>> http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E ...
- linux里怎样压缩文件,如何在Linux中解压缩文件
ZIP是最广泛使用的存档文件格式,支持无损数据压缩. ZIP文件是一个数据容器,其中包含一个或多个压缩文件或目录. 在本教程中,我们将说明如何使用unzip命令通过命令行在Linux系统中解压缩文件. ...
- linux+tar怎样解压,如何在Linux上使用tar命令解压和压缩文件
linux上的tar命令通常用来创建名为.tar.gz或.tgz的归档文件,也被称为"压缩包".该命令有大量的选择,但你只需要记住几个字母来快速创建tar归档. tar命令可以提取 ...
- linux中如何压缩目录文件,如何在Linux中压缩文件和目录
Zip是使用最广泛的存档文件格式,支持无损数据压缩. 压缩文件是一种数据容器,其中包含一个或多个压缩文件或目录.与未压缩的文件相比,压缩文件占用的磁盘空间更少,可以更快地从一台计算机传输到另一台计算机 ...
- linux禁止ssh传输文件,如何在Linux下使用scp命令通过ssh安全传输文件
原标题:如何在Linux下使用scp命令通过ssh安全传输文件 在Unix或Linux操作系统上,scp实用程序(secure copy)与更著名的命令cp类似,但用于在安全加密的网络上在主机之间传输 ...
- linux 解压zip 空格,如何在linux系统下对文件夹名有空格的文件夹进行操作,linux空格...
如何在linux系统下对文件夹名有空格的文件夹进行操作,linux空格 在Windows操作系统中可以轻易地创建\移动\删除文件夹名带有空格的文件夹, 而在linux则需要进行一些特殊的处理才能实现以 ...
- linux下c语言读取roed文件,如何在Linux系统上安装Android4.4.docx
Android (x86)项目致力于移植 Android系统到X86处理器上,使用户可以更容易的在任何电脑上安装 Android.他们通过使用android源码,增加补丁来使 Android能够在X8 ...
- linux还原环境,Linux环境利用恢复被rm意外删除数据文件
Linux环境下不小心在操作系统误rm删除数据文件后,在没有重启数据库或者操作系统的情况下可以利用操作系统句柄恢复.[@more@]1.数据库版本信息: SQL> select * from v ...
最新文章
- Python-图像的手绘效果
- 选择技术栈构建通用平台
- JavaScript 参考教程(二)——转载
- Mybatis MySQL批量更新
- 二进制,八进制十进制十六进制之间数据转换
- lammps教程:boundary命令详解
- 计算机控制中的pid是什么意思,PID代表的是什么意思?
- 一个医院内的计算机网络系统属于,医院信息管理系统
- GIT 密钥生成工具puttygen使用技巧
- JavaScript 3D动画库three.js入门篇
- PDF怎么转换成CAD?教你几步轻松掌握
- 每日算法(5)——正整数分解质因数
- 指针(指针是什么,指针和指针的类型)
- Java实现图表趋势图的展现
- 保护眼睛android版本,夜间护眼软件下载-夜间护眼 安卓版v4.9.1-PC6安卓网
- 【MySQL】查看mysql的warnings
- 计量广义差分操作过程_计量学堂 | 计量经济学最基本的31个问题
- 转:用迅雷下载Android SDK全系列
- 计算机专业毕业设计选题推荐(建议收藏)
- Android开发之深入理解Android Studio构建文件build.gradle配置