Linux

如何創建帶有校驗和但不壓縮的 tar 文件

  • March 4, 2019

(注意,這不是創建包含校驗和的 tar 文件的副本)

我熟悉使用 tar + gzip 創建壓縮的 tar 文件tar cf - files | gzip > something.tar.gz(這幾乎是我想要的行為。

但是,我有一台處理器(真的)很慢,但網卡速度很快的電腦。我發現如果我使用 tar 加 gzip 加 socat,我的網路傳輸速度是 1/10(100Mbps),而不是 gzip 命令退出管道(950Mbps)。

一些存檔實用程序,如 7Zip 和 Zip 支持零壓縮選項。我沒有看到 gzip 或 bzip2 有這樣的選項。但是 Zip 和 7Zip 不支持像 gzip 和 bzip2 那樣的正確流式傳輸(我知道 7z 可以從 stdio 讀取/寫入純文字,但它不會將壓縮文件寫入 stdout)。我必須有一個適當的流式“壓縮”程序,因為我將使用 socat 將存檔傳送到遠端主機。

所以問題是,有沒有辦法創建一個 tar 存檔,同時以類似存檔的格式包裝輸出,而不是使用 gzip 或 bzip2?或者有什麼方法可以讓 gzip 或 bzip2 使用“無壓縮”?或者是否有一個非常簡單的超快速流壓縮實用程序,它可能只使用 RLE 編碼?

警告 - 它需要完全流式傳輸,以便我可以使用 socat;解決方案必須是 CPU 燈;解決方案必須使用 cygwin 和 debian 儲存庫中可用的元件

您可以lz4用作 gzip 的直接替代品。壓縮率不是很好,但與 gzip 相比,它通常快得驚人。

對於您嘗試做的事情來說,它可能仍然太慢,但它可能值得一看。

您還可以tee將 的輸出tar放入兩個不同的流中並將其中一個推入md5sumsha1sumsha256sum通過呼叫 tar cf - files | tee >(md5sum) | whatever-command.

引用自:https://serverfault.com/questions/956689