我有一个 27GB 的文件,我正在尝试将它从 AWS Linux EC2 移动到 S3。我已经尝试了“S3put”命令和“S3cmd put”命令。两者都使用测试文件。两者都不适用于大文件。没有给出错误,命令立即返回但没有任何反应。
s3cmd put bigfile.tsv s3://bucket/bigfile.tsv
我有一个 27GB 的文件,我正在尝试将它从 AWS Linux EC2 移动到 S3。我已经尝试了“S3put”命令和“S3cmd put”命令。两者都使用测试文件。两者都不适用于大文件。没有给出错误,命令立即返回但没有任何反应。
s3cmd put bigfile.tsv s3://bucket/bigfile.tsv
尽管您可以将最大大小为 5TB 的对象上传到 S3,但 S3 对单个 PUT 操作的大小限制为 5GB。
为了加载大于 5GB 的文件(甚至大于 100MB 的文件),您将需要使用 S3 的分段上传功能。
http://docs.amazonwebservices.com/AmazonS3/latest/dev/UploadingObjects.html
http://aws.typepad.com/aws/2010/11/amazon-s3-multipart-upload.html
(忽略上述博文中关于 5GB 对象限制的过时描述。当前限制为 5TB。)
Python 的 boto 库支持分段上传,最新的 boto 软件包括一个“s3multiput”命令行工具,可以为您处理复杂性,甚至可以并行化分段上传。
该文件不存在,doh。通过添加 -v 标记以详细模式运行 s3 命令后,我意识到了这一点:
s3cmd put -v bigfile.tsv s3://bucket/bigfile.tsv
s3cmd 版本 1.1.0 支持作为“put”命令的一部分的分段上传,但它仍处于测试阶段(目前。)