cpio VS tar - 何百ものディレクトリを1つのファイルに圧縮するための最高のアーカイブソリューションは何ですか

cpio VS tar - 何百ものディレクトリを1つのファイルに圧縮するための最高のアーカイブソリューションは何ですか

以下には数百のディレクトリがあり、/var/Recording各ディレクトリにはファイル、ハードリンク、ソフトリンクなどのサブディレクトリがあります。

/var/Recordingzipファイルを作成するために、以下のすべてのディレクトリを圧縮したいと思います。

どのコマンドが最良の圧縮を提供しますか?tarまたはcpio(特にハードリンクファイルとソフトリンクファイルがあることを考慮して)。

tarまた、/ commandの正しい構文は何ですかcpio

  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1034
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1033
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1038
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1037
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1036
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1041
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1040
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1039
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1044
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1043
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1042
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1047
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1046
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1045
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1049
  drwxr-x--- 2 root root 4096 Nov 22 18:57 458ca4e8-0edf-4204-9f9b-9c3dc02953c5.1048
  .
  .
  .
  .
  .

ベストアンサー1

cpio(UNIXに含まれている2つのユーティリティのうち、以前のユーティリティ)は、オプション(-pファイルシステムからファイルシステムにコピー)のハードリンクサポートを提供するためにのみ使用されますが、出力newc形式(デフォルトcpioでは使用されていない形式)も出力ハードリンクにあります。サポートされます。ファイルから。 (GNU)tar特別なオプションなしでハードリンクがサポートされています。比較資料を確認できますここ

したがって、1つの大きなハードリンクファイルと100個の小さなファイルを使用してテストを実行すると、次のようになります。

$ mkdir tmp
$ dd if=/dev/urandom of=tmp/blabla bs=1k count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1,0 MB) copied, 0,0764345 s, 13,7 MB/s
$ ln tmp/blabla tmp/hardlink
$ tar cvf tmp.tar tmp
$ find tmp -print0 | cpio -0o > out.cpio
4104 blocks
$ find tmp -print0 | cpio -0o --format=newc > outnewc.cpio
2074 blocks
$ xz -9k out.tar outnewc.cpio
$ bzip2 -9k out.tar outnewc.cpio
$ ls -l out*
-rw-rw-r-- 1 anthon users 2101248 Nov 23 12:30 out.cpio
-rw-rw-r-- 1 anthon users 1061888 Nov 23 12:30 outnewc.cpio
-rw-rw-r-- 1 anthon users 1055935 Nov 23 12:30 outnewc.cpio.bz2
-rw-rw-r-- 1 anthon users 1050652 Nov 23 12:30 outnewc.cpio.xz
-rw-rw-r-- 1 anthon users 1157120 Nov 23 12:30 out.tar
-rw-rw-r-- 1 anthon users 1055402 Nov 23 12:30 out.tar.bz2
-rw-rw-r-- 1 anthon users 1050928 Nov 23 12:30 out.tar.xz

outnewc.cpio非圧縮バージョン(およびcpio out.tar)はcpioに利点を提供し、それを圧縮するとより良い結果が得られることがわかりますxz -9(通常、両方よりもはるかに悪い)。bzip2 -9gzipこの圧縮は出力差をxz最小限に抑えます。tarcpio。ただし、圧縮はデータとアーカイブ内のデータの順序によって大きく異なり、実際のデータ(サンプル)で実際にテストする必要があります。

圧縮を並列化したい場合は、私の記事をチェックしてください。ここ

おすすめ記事