web-dev-qa-db-ja.com

zstd -r folder -o output.zstが原因で、複数のファイルを1つのファイルから分離するにはどうすればよいですか?

マニュアルを十分に読んでおらず、次のコマンドを実行しました

$ 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
2
Tun

また、この質問を zstd github issue に投稿し、 Cyan497 から次のことを学びました。

すべての圧縮フレームは、同じファイルoutput.zstに連続して保存されます。

少なくとも理論的には、各フレームを分離して各ファイルの境界を見つける方法はありますが、別の問題は、これらのフレームのいずれにもファイル名もディレクトリツリー内の位置も含まれていないことです。したがって、名前のないファイルがたくさんあることになります。

アーカイブする適切な方法は、zstdをtarと組み合わせることです。tarはファイルメタデータの保存を担当します。

現在、フレームを分離するためのツールやプログラムはありません。しかし、誰かが_lz4frame.h_を使用して書くことができます。

デフォルトでは、CLIはすべてのフレームを連続して同じ解凍ファイルに解凍します...

...自分でプログラムし、... ZSTD_decompressStream()APIを使用します。

2
Tun