AWS S3如何判定需为哪些文件生成.md5sum校验文件
核心原因澄清
AWS S3 原生没有自动为上传对象生成独立.md5sum校验文件的功能,你在桶内看到的.md5sum文件和S3服务的自动处理逻辑无关,和文件体积大小也没有关联:
- 已配套生成.md5sum的文件,都是你上传前本地环境就已经存在对应校验文件的对象:这类文件(
.bam、各类.vcf.gz)是标准基因组分析流程的核心输出,samtools、GATK等生信工具在生成这类核心结果文件时,会默认同步生成同名.md5sum校验文件,上传时被工具一并同步到了S3存储桶。 - 未生成.md5sum的两个文件(
A0688.tn.tsv.gz、A0688.target.counts.gz)属于分析流程产出的中间统计类文件,你使用的生信流程本身没有配置为这类文件生成md5校验值的步骤,本地源目录里就不存在对应的.md5sum文件,上传到S3后自然不会凭空出现对应的校验文件。
全量文件md5校验实现方案
S3本身会为每个上传的对象存储校验元数据,但分片上传的大文件对应的ETag值不是全文件MD5,无法直接用于跨环境下载后的完整性校验,你可以通过以下两种方式实现全文件校验需求:
- 本地上传前批量生成:在存放源文件的本地目录执行命令,批量为所有非md5文件生成校验值,汇总为统一校验文件后再上传:
后续下载文件到其他环境后,执行# Linux/macOS环境执行 find . -type f ! -name "*.md5sum" -exec md5sum {} \; > all_files.md5sumsmd5sum -c all_files.md5sums即可批量完成所有文件的完整性校验。 - 已上传到S3的文件补生成:如果本地已删除源文件,可以启动一台和S3桶同区域的EC2实例,通过内网挂载S3存储桶,遍历所有无对应.md5sum的对象计算MD5值,生成对应校验文件后写回S3即可,同区域内网访问S3不产生额外流量费用,大文件计算效率很高。
内容的提问来源于stack exchange,提问作者Fidi Naj
相关产品推荐
相关产品推荐

