当前位置: 首页 > 科技观察

如何在Linux中使用文件压缩

时间:2023-03-17 20:00:21 科技观察

Linux系统提供了许多文件压缩选项,关键是选择最适合您的选项。如果您对适用于您的Linux系统的文件压缩命令或选项有任何疑问,您应该看看aproposcompress命令的输出。如果您有机会这样做,您会惊讶于压缩和解压缩文件的命令数量之多;此外,还有许多用于比较、检查和搜索zip文件内容的命令,甚至可以将压缩文件从一种格式转换为另一种格式(例如,从.z格式转换为.gz格式)。您可以看到只有这么多条目可用于bzip2压缩。添加zip、gzip和xz,你就有了很多选择。$适当压缩??|grep^bzbzcat(1)-将文件解压缩到标准输出bzcmp(1)-比较bzip2压缩文件bzdiff(1)-比较bzip2压缩文件bzegrep(1)-搜索可能的bzip2压缩文件的正则表达式bzexe(1)-压缩可执行文件bzfgrep(1)-搜索可能的bzip2压缩文件的正则表达式bzgrep(1)-搜索可能的bzip2压缩文件的正则表达式bzip2(1)-块排序文件压缩器,v1。0.6bzless(1)-用于crt查看bzip2压缩文本的文件细读过滤器bzmore(1)-用于crt查看bzip2压缩文本的文件细读过滤器在我的Ubuntu系统上,apropos压缩命令的返回列出了60多个条目该命令.压缩算法压缩没有通用的解决方案。有些压缩工具是有损压缩,比如有些压缩是用来减小mp3文件的大小,让听者有接近原声的音乐体验。但是在Linux命令行上用于压缩或归档用户文件的算法必须能够准确地恢复原始数据。换句话说,它们必须是无损的。这是怎么做到的?假设一行中的300个相同字符可以压缩成类似“300x”的字符串,但该算法对大多数文件不是很有用,因为文件不太可能包含比更完全随机的序列更长的相同字符序列。压缩算法要复杂得多,并且自Unix早期引入压缩***以来,它变得更加复杂。Linux系统上的压缩命令Linux系统上最常用的文件压缩命令有zip、gzip、bzip2、xz。所有这些压缩命令的工作方式都差不多,但是你需要权衡要压缩多少文件(节省多少空间),压缩需要多长时间,以及压缩文件在你需要使用的其他系统上的兼容性.有时压缩文件并不需要花费很多时间和精力。在下面的示例中,压缩文件实际上比原始文件大。这不是一种常见情况,但它可能会发生——尤其是当文件内容达到一定程度的随机性时。$timezipbigfile.zip大文件添加:大文件(默认0%)real0m0.055suser0m0.000ssys0m0.016s$ls-lbigfile*-rw-r--r--1rootroot0Dec2022:36bigfile-rw--------1rootroot164Dec.2022:41bigfile.zip请注意,文件的压缩版本(bigfile.zip)比原始文件(bigfile)大。如果压缩增加了文件大小或减少了一小部分,也许唯一的好处是便于在线备份。如果您在压缩文件后看到以下消息,则表示您没有从压缩中获得任何好处。(默认为1%)文件内容在文件压缩过程中起着重要作用。在上面的示例中,文件大小增加是因为文件内容太随机了。压缩一个内容只包含0的文件,你会得到一个相当惊人的压缩率。在这种极端情况下,三种常用的压缩工具都有很好的效果。-rw-rw-r--1shsshs10485760Dec812:31zeroes.txt-rw-rw-r--1shsshs49Dec817:28zeroes.txt.bz2-rw-rw-r--1shsshs10219Dec817:28zeroes.txt.gz-rw-rw-r--1shsshs1660Dec812:31zeroes.txt.xz-rw-rw-r--1shsshs10360Dec812:24zeroes.zip令人印象深刻的是,你不太可能看到超过1000万字节的文件被压缩到50字节以下,因为基本上没有这样的东西。在更现实的情况下,大小差异一般是不同的,但差异并不显着,比如对于确实不太大的jpg图片文件。-rw-r--r--1shsshs13522Dec1118:58image.jpg-rw-r--r--1shsshs13875Dec1118:58image.jpg.bz2-rw-r--r--1shsshs13441Dec1118:58image.jpg.gz-rw-r--r--1shsshs13508Dec1118:58image.jpg.xz-rw-r--r--1shsshs13581Dec1118:58image.jpg.zip对大型文本文件进行相同的压缩时,您会看到明显的差异。$ls-ltextfile*-rw-rw-r--1shsshs8740836Dec1118:41textfile-rw-rw-r--1shsshs1519807Dec1118:41textfile.bz2-rw-rw-r--1shsshs1977669Dec1118:41textfile.gz-rw-rw-r--1shsshs1024700Dec1118:41textfile.xz-rw-rw-r--1shsshs1977808Dec1118:41textfile.zip在这种情况下,与其他压缩命令相比,xz有效地减小了文件大小,第二个bzip2命令也是如此。查看档案这些以more(bzmore等)结尾的命令允许您查看档案的内容而无需解压缩它。bzmore(1)-用于crt查看bzip2压缩文本的文件细读过滤器lzmore(1)-查看xz或lzma压缩(文本)文件xzmore(1)-查看xz或lzma压缩(文本)文件zmore(1)-用于crt的文件细读过滤器查看压缩文本这些命令会进行大量计算,以便解压缩压缩文件的内容并将其显示给您。但另一方面,它们不会将解压后的文件留在您的系统中,它们只是即时解压所需的部分。$xzmore文本文件.xz|head-1这是明天员工会议的议程:比较压缩文件有几个压缩工具箱包含diff命令(例如:xzdiff),这些工具将工作卸载到cmp和diff比较,而不是对特定算法进行比较。例如,xzdiff命令比较bz2类型的文件与比较xz类型的文件一样容易。如何选择最好的Linux压缩工具如何选择压缩工具取决于您的工作。在某些情况下,选择取决于您正在压缩的数据的内容。在更多情况下,取决于您组织内的实践,除非您对磁盘空间非常敏感。这是一个一般性建议:zip最适合需要与Windows共享或在Windows下使用的文件。gzip可能最适合您要在Unix/Linux系统下使用的文件。虽然bzip2几乎无处不在,但gzip似乎会存在很长时间。bzip2使用与gzip不同的算法,生成的文件比gzip小,但压缩时间更长。xz通常提供最佳压缩比,但也可能需要相当长的时间。它比其他工具更新一点,并且可能不存在于您正在使用的系统上。请注意,压缩文件时有很多选项,在极少数情况下,它可能无法有效节省磁盘存储空间。