三重壓縮,我只節省 1% 的空間?

三重壓縮,我只節省 1% 的空間?

我一直在嘗試節省 Linux 伺服器上的空間,並且我有一個資料夾,其子資料夾中包含 22GB 的映像。

所以我決定壓縮它們。

首先我使用焦油:

tar -zcf folder.tar folder 

然後gzip

gzip folder

最後,為了以防萬一,bzip2

bzip2 folder

畢竟,所有folder.tar.gz.bzip2s 的總數仍然是 22GB!使用更精細的精度,可節省 1% 的空間!

我在這裡做錯了什麼嗎?我預計節省的費用會比 1% 多很多倍!

我還能如何壓縮檔案?

答案1

壓縮比為非常取決於您要壓縮的內容。文字壓縮得如此之好的原因是它甚至沒有開始充分利用同一二進位空間中可表示的全部數字。因此,這樣做的格式(例如壓縮文件)可以通過使用所有那些在文本編碼中沒有任何意義的二進制數字來在更少的空間中存儲相同的信息,並且可以有效地表示單個字節中的字符的整個進程並獲得良好的壓縮比那樣。

如果檔案已經被壓縮,您通常不會看到再次壓縮它們有多大優勢。如果這確實為您節省了額外的空間,則可能表示第一種壓縮演算法有點糟糕。從問題的性質來看,我假設其中很多是媒體文件,因此已經被壓縮(儘管演算法優先考慮解壓縮速度),因此您可能不會從它們中獲得太多資訊。有點像石頭裡的血:它們已經盡可能小而不會失去訊息。

如果我非常擔心空間,我只需執行“bzip2 -9”並稱其為好。不過,我聽說過有關 XZ 的比率的好消息。我自己沒有使用過 XZ(除了解壓縮其他人的東西),但它應該比 bzip2 有更好的比率,但壓縮/解壓縮需要更長的時間。

答案2

您的壓縮嘗試失敗了,因為您的數據已經被高度壓縮,並且沒有更多的資訊可以獲取,請參閱其他答案以獲取更詳細的解釋。但是,如果您能同意有損的壓縮,與無損的就像您之前嘗試過的那樣,您可以顯著壓縮影像。但由於資料被刪除,因此無法恢復。

以下是使用 imagemagick 重新壓縮所有 JPEG 影像的範例。請注意,這將覆蓋您的文件。

find image_directory -type f -name "*.jpg" -exec mogrify -quality 75% {} \+

答案3

最常見的圖像格式已經被壓縮(如 jpg、png、gif),因此您不會節省太多。 1% 聽起來不錯。

增加更多壓縮實際上可以使結果(稍微)更大,因為壓縮演算法對壓縮資料沒有任何好處,然後格式(例如gzip)必須向輸出添加標頭和/或結構資訊。

對不起!如果您使用的是 png,您可以嘗試使用以下命令縮小文件粉碎

答案4

另一點值得提出:使用多種壓縮工具/演算法實際上可能會導致最終結果的大小膨脹並變得比需要的更大。這意味著如果您將 100GB 壓縮到 10GB,然後嘗試再次壓縮它,您最終可能會得到 ~15GB,具體取決於您壓縮的內容以及壓縮的內容。

就我個人而言,我從來不做任何事情,只是tar cjvf container.tar.bz2 /target因為雙重壓縮節省的磁碟空間量微乎其微。

相關內容