找回密码
 立即注册
相关推荐换一批
  1. SJ/T 11156-1998 计算机辅助设计 设计文件档案管理制度
  2. SJ/T 10719-1996 电子设备设计文件编制示例
  3. SJ/T 10631-1995 工艺文件的编号
  4. SJ/T 10375-1993 工艺文件格式的填写
  5. SJ/T 10323-1992 电池产品设计文件的分类编号
  6. GB/T 19097-2003 技术产品文件 生命周期模型及文档分配
  7. GB/T 18253-2000 钢及钢产品 检验文件的类型
  8. FZ/T 90066-1995 纺织机械 产品图样及设计文件的更改
  9. FZ/T 90012-1991 材料在图样及设计文件中的标记方法
  10. FZ/T 91003.8-1993 纺织机械制造工艺管理导则 工艺文件的修改
  11. FZ/T 91003.7-1993 纺织机械制造工艺管理导则 工艺文件标准审查
  12. FZ/T 91001.4-1993 纺织机械制造工艺文件 工艺装备设计图样及文件格式
  13. FZ/T 91001.1-1993 纺织机械制造工艺文件 工艺文件完整性及审批程序
  14. GB/T 13959-1992 文件格式分类与代码编制方法
  15. GB/T 7662-1987 立式平衡机校验法
  16. SJ/T 207.8-2001 设计文件管理制度 第8部分:图样编制
  17. SJ/T 207.7-2001 设计文件管理制度 第7部分:电气简图的编制
  18. SJ/T 207.6-2001 设计文件管理制度 第6部分:项目代号
  19. GB/T 16973.1-1997 信息技术 文本与办公系统 文件归档和检索(DFR) 第1部分:抽象服务
  20. GB/T 16722.4-1996 技术产品文件 计算机辅助技术信息处理 文件管理与检索系统
  21. GB/T 16722.3-1996 技术产品文件 计算机辅助技术信息处理 产品设计过程中的状态
  22. GB/T 16722.2-1996 技术产品文件 计算机辅助技术信息处理 原始文件
  23. GB/T 16656.21-1997 工业自动化系统与集成 产品数据的表达与交换 第21部分:实现方法
  24. GB/T 16652-1996 开放文件体系结构(ODA)和互换格式 文件结构
问题
上传到 Amazon S3 的小于 5GB 的文件有一个 ETag,它是文件的 MD5 哈希值,可以轻松检查您的本地文件是否与您放在 S3 上的文件相同。

但是如果你的文件大于 5GB,那么亚马逊会以不同的方式计算 ETag。

例如,我对一个 5970150664 字节的文件进行了 380 个部分的分段上传。现在 S3 显示它有一个 ETag 6bcf86bed8807b8e78f0fc6e0a53079d-380 。我的本地文件的 md5 哈希是 702242d3703818ddefe6bf7da2bed757 。我认为破折号后的数字是分段上传中的部分数。

我还怀疑新的 ETag(破折号之前)仍然是 MD5 哈希,但在分段上传期间以某种方式包含一些元数据。

有谁知道如何使用与 Amazon S3 相同的算法计算 ETag?

回答
刚刚确认了一个。向亚马逊致敬,让事情变得容易猜到。

假设您上传了一个 14MB 的文件,而您的小部件大小为 5MB。计算每个部分对应的 3 个 MD5 校验和,即前 5 MB、后 5 MB 和后 4 MB。然后校验它们的连接。由于 MD5 校验和是二进制数据的十六进制表示,因此请确保使用对二进制串联进行解码的 MD5,而不是 ASCII 或 UTF-8 编码的串联。完成后,添加连字符和部件号以获取 ETag。

这是从控制台在 Mac OS X 上执行此操作的命令:
  1. $ dd bs=1m count=5 skip=0 if=someFile | md5 >>checksums.txt
  2. 5+0 records in
  3. 5+0 records out
  4. 5242880 bytes transferred in 0.019611 secs (267345449 bytes/sec)
  5. $ dd bs=1m count=5 skip=5 if=someFile | md5 >>checksums.txt
  6. 5+0 records in
  7. 5+0 records out
  8. 5242880 bytes transferred in 0.019182 secs (273323380 bytes/sec)
  9. $ dd bs=1m count=5 skip=10 if=someFile | md5 >>checksums.txt
  10. 2+1 records in
  11. 2+1 records out
  12. 2599812 bytes transferred in 0.011112 secs (233964895 bytes/sec)
复制代码

此时,所有校验和都在 checksums.txt 中。要连接它们并解码十六进制并获取批次的 MD5 校验和,只需使用

$ xxd -r -p 校验和.txt | md5

现在添加“-3”;获取 ETag 因为有 3 个部分。

值得注意的是,Mac OS X 上的 md5 只写出校验和,但 Linux 上的 md5sum 也输出文件名。你需要摆脱它,但我确信有一些选项可以只输出校验和。您不必担心空格,因为 xxd 会忽略它。

注意:如果您通过 aws s3 cp 使用 aws cli 上传,那么您的块大小很可能为 8MB。根据文档,这是默认设置。






上一篇:ReactJS 组件文本区域在状态更改时不更新
下一篇:替换整个页面上多个单词的所有例子