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 使用文件压缩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钉钉小程序 企业内部应用开发
- 下一篇: 金蝶多文件上传报错的处理方法