web-dev-qa-db-ja.com

すべてのコアを備えたGzip

各サーバーには、gzipで圧縮できる多数のファイルが格納されています。サーバーにはすべて異なる数のコアがあります。各コアのgzipを起動し、gzipが同じファイルを圧縮していないことを確認するbashスクリプトを作成するにはどうすればよいですか?

40
User1

Linuxを使用している場合は、GNUのxargsを使用して、コアがある数のプロセスを起動できます。

CORES=$(grep -c '^processor' /proc/cpuinfo)
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9
  • find -print0/xargs -0は、ファイル名の空白から保護します
  • xargs -n 1は、ファイルごとに1つのgzipプロセスを意味します
  • xargs -Pは、ジョブの数を指定します
  • gzip -9は最大圧縮を意味します
58
Demosthenex

マルチスレッドの pigz であるgzipの実装があります。複数のスレッドで1つのファイルを圧縮しているため、一度に複数のファイルを圧縮するよりも、ディスクから効率的に読み取ることができるはずです。

70
David Yaw

GNU parallel のチェックを検討することをお勧めします。私もこれを見つけました youtubeのビデオ これはあなたが探していることをしているようです。

6
Gangadhar