複数のファイルを1つにパッケージ化する必要があるユースケースがあります。上記のすべてのコマンドは同じ効果を持ちます。わかりましたgzip
圧縮私のファイルですが、スペースが私にとってまったく問題にならないと仮定すると、この場合どのようなものを選択する必要がありますか?
これで、圧縮を使用すると、ネットワーク経由でファイルを転送するときに時間が節約されますが、解凍すると、転送時に節約される時間を補償するよりも多くのことが可能であると言えます。それでは、基本的に上記のツールのどれを選択するかを選択して決定することはできませんか?
答え1
複数のファイルを1つのファイルにパッケージ化する必要があるユースケースがあります。
ああ、一つ必要です。ファイルファイル数
上記のすべてのコマンドは同じ効果を持ちます。
よろしくお願いします!一部はアーカイバー、一部はコンプレッサー、一部は圧縮解除器、一部はコンプレッサーです。
ar
:とても古いです。ユースケースは次のとおりです。非常に特定の。あなたは決して自分自身を利用したくないでしょうar
。gzip
/gunzip
:アーカイバーではありません。単一のデータストリームを取得して圧縮することができます(またはgunzip
.あなたはこれを使うことができます一緒にアーカイバーと一緒に。 Gzipは非常に古く、遅く、非効率的です。より高い圧縮率またはより高い速度を達成するか、またはそれらの混合を達成する代替があります(例えばzstd
、、lz4
)tar
:部族テープアーカイバー;コンテンツを圧縮するために使用できる非常に一般的なアーカイブプログラムです。たとえば、
tar cf archive.tar file1 file2 file3
作る圧縮されていないfile1、file2、file3 を含むアーカイブです。しかし、reateコマンドz
にオプションを追加します(c
私が知っているtar
間違った構文)。
tar czf archive.tar.gz file1 file2 file3
内部でtar
使用され、gzip
圧縮されたtarアーカイブを作成します。
また、選択したコンプレッサーに結果をパイプして圧縮アーカイブを取得することもできます。
tar cf - file1 file2 file3 | gzip > archive.tar.gz # or
tar cf - file1 file2 file3 | zstd > archive.tar.zst # or
tar cf - file1 file2 file3 | lz4 - archive.tar.xz # or
tar cf - file1 file2 file3 | xz > archive.tar.xz
あなたは理解しました。
一般的ですが、tar
非常に古いプログラムやフォーマットなので、残念なことがたくさんあります。ただし、Linuxファイルの所有権、権限、リンク、特殊ファイルなどを正しく処理します。
zip
圧縮アーカイバーです。 Windowsでもうまく機能しますが、ファイル権限を処理できません。したがって、バックアップできません!7z
zipと同様に、圧縮されたアーカイブプログラムはユーザーと資格情報を処理できません。したがって、バックアップできません!mksquashfs
通常のファイルシステムのように使用することも、非常にきれいに圧縮されたアーカイブファイル用のアーカイブプログラムです。要件に応じて、最新の非常に高速または非常に強力な圧縮を使用できます。
これで、圧縮を使用すると、ネットワーク経由でファイルを転送するときに時間が節約されますが、解凍すると、転送時に節約される時間を補償するよりも多くのことが可能であると言えます。
その人たちは正しいです!速度に最適化された最新の圧縮を使用すると、急いで解凍を介してSSDで読み書きすることと比較されます。そしてネットワークよりはるかに高速です(データセンタークラスのネットワークを考慮しない限り)。
したがって、スピード気になる場合は、高速コンプレッサーを使用して購入してください。言及したように、gzip
おそらく2023年にはコンプレッサーの選択ではありません。
tar cf - srces/ | zstd -1 > archive.tar.zst
ソースとバイナリを混合して使用したテストでは、約3Gb / sのアーカイブ速度が達成されました(ネットワーク経由で送信する予定であり、コンプレッサーをボトルネックと見なす場合)。もともと4.97GBが1.4GBになりました。-2
置換を使用すると、-1
結果が10%小さくなり、速度が2.5 Gb / sに減少します。これは、ほとんどのSATA SSDよりも書き込み速度が速いです。これはシングルスレッドです。すべてのCPUコアを最大限に活用するために、zstd -2 -T0
私の謙虚なPCは6.5 Gb / sを実行しますが、それでもzstd -4 -T0
2.5 Gb / sです。
だから:
- あなたと同じソフトウェアを使用していない他の人にファイルを送信できるように、ファイルをすばやくアーカイブする必要がありますか?
tar cv - files… | zstd -4 -T0 > archive.tar.zst
ただあなたが欲しいもの - ファイルをアーカイブする必要がありますが、同じソフトウェアを使用していない他の人に送信できるようにしっかりと圧縮する必要がありますか?
tar cv - files… | zstd -13 -T0 > archive.tar.zst
遅いですが、すでに非常に高い圧縮率を提供しています。 - ファイルをアーカイブする必要があり、後でアーカイブ解除せずに読みたいですか?
mksquashfs files… archive.squashfs -comp=zstd
;-Xcompression-level 4
サイズを犠牲にして、より速いスピードのために最後に追加されました。
結果archive.tar.zst
ファイルは最新のGNU tarを使用して直接解凍できます。tar xf archive.tar.zst
DVDのようにarchive.squashfs
直接インストールして使用することができますudisksctl loop-setup -f archive.squashfs
(つまり、ファイルを直接参照できます)。unsquashfs archive.squashfs