私は、 をアーカイブするための並列圧縮/暗号化バックアップスクリプトを、GNU parallel、xz、およびGnuPGを使用して作成しようとしています。コア部分のスクリプトのは、次のとおりです。GnuPGとGNU並列を使用して大容量ファイルの並列暗号化を行う方法は?
GnuPGの暗号化なしで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" \
| pv > $TARGET/$FILENAME
、それは素晴らしい(解凍してuntarした作品)、 を動作しますが、並列暗号化を追加した後、以下のエラーで復号化するために失敗しています:
[don't know]: invalid packet (ctb=0a)
gpg: WARNING: encrypted message has been manipulated!
gpg: decrypt_message failed: Unexpected error
: Truncated tar archive
tar: Error exit delayed from previous errors.
圧縮されていないサイズはgnu parallelのブロックサイズ(約125M)と同じであるため、GnuPGが部分ブロック暗号をサポートしていると考えています。どうすればこの問題を解決できますか?
FYI
乱数生成についてのもう一つの並列のgpg encrption問題
https://unix.stackexchange.com/questions/105059/parallel-pausing-and-resuming
私はあなたのコマンドをテストして報告します。 –
@Old Tange:私は '--rrs'について知らなかった。カスタム区切り文字を使用することをお勧めします。私があなたのコマンドで得ることができない1つのことは '-N1'オプションです。このコンテキストでこのオプションが何をするのですか? man page said * --pipe -Nと一緒に使うと、読むべきレコードの数です。これはクイックアンサーで--block。* –
thxよりやや遅いです。単に好奇心の中で '-N1'オプションが見つからない場合、マルチレコードをパイプに並列に渡しますか? –