私は次のようなものを実行しています:
find . -maxdepth 1 -type f -note -iname "*.gpg" | sort | while read file ; do
echo "Encrypting $file..."
gpg --trust-model always --recipient "[email protected]" --output "$file.gpg" \
--encrypt "$file" && rm "$file"
done
これはうまくいきますが、GPGは暗号化操作にマルチコアを使用するように最適化されていないようです。私が暗号化しているファイルはサイズが2GB程度ですが、ファイルがかなり多いです。 Xタスクを並列に実行してファイルを暗号化してから削除できるようにしたいです。たとえば、一度に8つのタスクを制限するにはどうすればよいですか?
ベストアンサー1
インストールするとGNUパラレル達成したいことを簡単に実行できるツール:
$ find . -maxdepth 1 -type f -note -iname "*.gpg" | sort | \
parallel --gnu -j 8 --workdir $PWD ' \
echo "Encrypting {}..."; \
gpg --trust-model always \
--recipient "[email protected]" --output "{}.gpg" \
--encrypt "{}" && rm "{}" \
'
詳細
上記のコードは出力を取得してfind
として実行parallel
し、一度に8つずつ実行します。{}
渡されるファイル名はどこにでも表示され、この場所のfind
ファイル名を上書きします。{}