我需要计算 AWS S3 中保存的一个非常大的文件的 SHA256 和 SHA512 哈希值。我需要阻塞处理,直到两个计算都完成,并尝试使用 gnu parallel 来做到这一点。我不想从本地 S3 复制文件,而只想流式传输它。这是我得到的代码:
aws s3 cp s3://bucket-name/large-file - \
| parallel -j2 --halt now,fail=1 --pipe --keep-order --will-cite \
"sha256sum >/tmp/sha256.txt; sha512sum >/tmp/sha512.txt"
这不会出错,但生成的哈希值不正确(例如与运行时看到的结果进行比较
aws s3 cp s3://bucket-name/large-file - | shasum256
)。
理想情况下,我希望
parallel
产生 2 个作业来计算每个哈希和块,直到它们都完成(这就是我默认相信的 parallel
)。我还只想从 S3 流式传输一次文件(不是一次为 256,然后又为 512)。
我手头没有Linux机器,但我认为这将生成一次50个数字的序列,但同时计算字符数和行数:
seq 50 | parallel -v --tee --pipe ::: "wc -l" "wc -c"