Zstd

如何從 zstd -r folder -o output.zst 引起的單個文件中分離多個文件?

  • November 2, 2019

我沒有閱讀足夠的手冊並執行以下命令

$ zstd -r folder -o output.zst

以下命令給了我一個名為 output 的文件

$ unzstd output.zst 

輸出文件具有連接文件夾下文件的所有內容。

是否有一些工具或程序可以將單個文件取消連接成多個原始文件?

這是我擁有的唯一備份文件,我需要備份。

編輯:我真正應該執行的(根據這個執行緒)是

# for tar version 1.31 and above
$ tar --zstd -cf output.tar.zst folder

# for tar version < 1.31
$ tar --use-compress-program zstd -cf output.tar.zst folder

我還在zstd github issue中發布了這個問題,我從Cyan4973學到了以下內容。

所有壓縮幀都只是背靠背儲存在同一個文件 output.zst 中。

雖然至少在理論上有一種方法可以分離每個幀,從而找到每個文件的邊界,但另一個問題是這些幀都不包含文件名,也不包含目錄樹中的位置。所以你最終會得到一堆無名文件。

歸檔的正確方法是將 zstd 與負責保存文件元數據的 tar 結合使用。

目前沒有工具或程序來分離框架。但是有人可以使用lz4frame.h.

預設情況下,CLI 只會將所有幀背靠背解壓縮到同一個解壓縮文件中……

…自己程式,…使用ZSTD_decompressStream()API。

引用自:https://unix.stackexchange.com/questions/549725