- Más nuevo
- Más votos
- Más comentarios
【以下的回答经过翻译处理】 “准备文件”,但紧接着又是“创建文件” 这只是为了让文档查看者看到如何创建“假文件”,以便使用“假文件”按照步骤上传到Glacier库。
首先使用AWS CLI创建vault:
$ aws glacier create-vault --account-id 7356xxxxxxxx --vault-name myvault
{
"location": "/7356xxxxxxxx/vaults/myvault"
}
接下来将100 GiB文件拆分为100 MiB块(在Windows上使用HJ-Split)
注意:100 GiB文件将有1,000个文件,需要双倍的磁盘空间
此命令将使用指定的每个块大小设置vault。
aws glacier initiate-multipart-upload --account-id 7356xxxxxxxx --archive-description "multipart upload test" --part-size 104857600 --vault-name myvault
上述命令将导致UPLOADID
{
"uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ",
"location": "/123456789012/vaults/myvault/multipart-uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
}
在 Windows 中,将 UPLOADID 设置为环境变量: set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
然后需要为100 GiB的区块文件创建为1000个并运行: $ aws glacier upload-multipart-part --upload-id %UPLOADID% --body chunkaa --range 'bytes 0-104857599/*' --account-id 7356xxxxxxxx --vault-name myvault
{
"checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id %UPLOADID% --body chunkab --range 'bytes 104857600-209715199/*' --account-id 7356xxxxxxxx --vault-name myvault
{
"checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id %UPLOADID% --body chunkac --range 'bytes 209715200-314572799/*' --account-id 7356xxxxxxxx --vault-name myvault
{
"checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
…
1,000 of the above for each of the 100 MiB chunks that were from split 100 GiB file. Note: most likely a 3rd party tool vendor would run the above in multiple concurrent threads with configurable retries for better performance/reliability.
然后,你需要为所有 1,000 个文件创建哈希值,这些文件是在你将 100 GiB 文件拆分为 100 MiB 区块时创建的)。 下载适用于 Windows 的 OpenSSL。 创建一个包含所有 1,000 个文件块的哈希值的文件: $ openssl dgst -sha256 -binary chunkaa > hash1
$ openssl dgst -sha256 -binary chunkab > hash2
$ openssl dgst -sha256 -binary chunkac > hash3
..
$ openssl dgst -sha256 -binary chunkxxxx > hash1000
接下来,使用以下算法创建用于在完成文件库分段上传时验证上传的 TREEHASH: type hash1 hash2 > hash12
openssl dgst -sha256 -binary hash12 > hash12hash
type hash12hash hash3 > hash123
openssl dgst -sha256 -binary hash123 > has123hash
type hash123hash hash4 > hash1234
openssl dgst -sha256 -binary hash1234 > hash1234hash
type hash1234hash hash5 > hash12345
openssl dgst -sha256 -binary hash12345 > hash12345hash
..
continue till you get to 1,000 of these
运行: openssl dgst -sha256 -binary hash12345blahblahblah 你会得到一个类似的返回: SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
这是最后一个 TREEHASH,用于验证已上传的分段。将该值设置为 TREEHASH 环境变量。 set TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
显然,对于大文件来说,手动执行上述操作并不是很可行。 通过提供档案和支持校验和 TREEHASH 来完成文件库上传 TREEHASH: $ aws glacier complete-multipart-upload --checksum %TREEHASH% --archive-size <total size of archive> --upload-id %UPLOADID% --account-id 7356xxxxxxxx --vault-name myvault
希望上面的片段分解能够帮助您更好地了解使用 AWS CLI 上传到 Glacier 文件库需要什么。是的,这非常痛苦,但我认为 AWS 从来没想过有人会为大文件手动执行此操作...
Contenido relevante
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace un año