【发布时间】:2017-09-17 05:33:11
【问题描述】:
我正在尝试编写用于归档的并行压缩/加密备份脚本 使用 GNU 并行、xz 和 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
没有 GnuPG 加密,它工作得很好(解压缩和解压工作), 但添加并行加密后,解密失败并出现以下错误:
[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对部分块加密的支持有关。我该如何解决这个问题?
仅供参考
另一个关于随机数生成的并行 gpg 加密问题
https://unix.stackexchange.com/questions/105059/parallel-pausing-and-resuming
【问题讨论】:
-
您可以在这里做的最好的一件事是将
-z 0传递给 gpg 以阻止它尝试重新压缩 xz 的输出。这可能会将您的工作更改为 IO-bound 并消除对 GNU 并行的需求。它为我做到了,但我会注意到我使用的是 zstd 而不是xz -9。
标签: encryption parallel-processing gnupg pgp gnu-parallel