並列GPGの生成

並列GPGの生成

大容量のバックアップフォルダをtar、圧縮、暗号化しようとしていますが、gpgがシングルスレッドであると考えているため、プロセスは遅くなります。私はルートフォルダを分割するためにパーティションを使用しようとしました。

これは可能ですか、それとも私が何か間違っていますか?

tar -I pigz -cf - source \
| gpg -c -o destination  --passphrase-file xyz --batch --no-tty --cipher-algo AES256 --compress-algo none --no-options - 2 \
| split --additional-suffix=.tar.part -b 1G - "backup-test" >>/log.out

答え1

tar --create --format=posix --preserve-permissions --same-owner --directory $BASE/$name --to-stdout . |
    parallel --pipe --recend '' --keep-order --block-size 128M "xz -9 --check=sha256 | gpg --encrypt --recipient $RECIPIENT;echo bLoCk EnD" |
    pv > $TARGET/$FILENAME

荷物などから取り出す

cat $TARGET/$FILENAME |
  parallel --pipe --recend 'bLoCk EnD\n' -N1 --keep-order --rrs 'gpg --decrypt | xz -d' |
  tar tv

-N1一度に1つのレコードを通過することを確認する必要があります。 GnuPGは複数のマージレコードの復号化をサポートしません。

答え2

Oleの提案に感謝します。さらなる調査によると、ボトルネックはAmazon S3遅延ロードによるものであることがわかりました。スナップショットからebsボリュームをリンクしました。これはまだ非常に遅いです。私たちはスピードを上げるためにfioを使用しました。

echo "今ファイルの初期化が開始されます: date" FILES=$(ls -d /mnt/database/files/database_*) echo $FILES

for f in $FILES do echo "Reading file $f" # これにより、すべての出力が停止し、プロセスが続行されます。 sudo fio --opendir="$f" --rw=read --bs=128k --iolength=32 --ioengine=libaio --direct=1 --name="$f" --openfiles=1000 > /開発/ボード2>&1 &

完璧

関連情報