我使用 s3DistCp(如这篇 AWS 文章所述)将大量 gzip 文件从 Google Cloud Storage 复制到 AWS 的 S3 。当我尝试比较文件的校验和时,它们不同(md5/sha-1/sha-256 有同样的问题)。
如果我比较几个文件(diff
或另一个校验和)的大小(字节)或解压缩内容,它们匹配。(在这种情况下,我正在比较通过从 Google 直接拉下的gsutil
文件与从 S3 拉下我的 distcp 文件)。
使用file
,我确实看到了两者之间的区别:
file1-gs-direct.gz: gzip compressed data, original size modulo 2^32 91571
file1-via-s3.gz: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT), original size modulo 2^32 91571
我的目标/问题:
我的目标是验证我下载的文件是否与原始文件的校验和匹配,但我不想直接在 Google 上重新下载或分析文件。我可以对我的 s3 存储文件做些什么来重现原始校验和吗?
我尝试过的事情:
使用不同的压缩重新压缩: 虽然我不希望 s3DistCp 更改原始文件的压缩,但这是我重新压缩的尝试:
target_sha=$(shasum -a 1 file1-gs-direct.gz | awk '{print $1}')
for i in {1..9}; do
cur_sha=$(cat file1-via-s3.gz | gunzip | gzip -n -$i | shasum -a 1 | awk '{print $1}')
echo "$i. $target_sha == $cur_sha ? $([[ $target_sha == $cur_sha ]] && echo 'Yes' || echo 'No')"
done
1. abcd...1234 == dcba...4321 ? No
2. ... ? No
...
2. ... ? No