上传到Amazon S3的小于5GB的文件有一个ETag,它只是文件的MD5哈希,这使您可以轻松检查本地文件是否与您在S3上的文件相同.
但是如果你的文件大于5GB,那么亚马逊会以不同的方式计算ETag.
例如,我在380个零件中进行了5,970,150,664字节文件的分段上传.现在S3显示它有一个ETag 6bcf86bed8807b8e78f0fc6e0a53079d-380.我的本地文件有一个md5哈希值702242d3703818ddefe6bf7da2bed757.我认为短划线后面的数字是分段上传中的部件数量.
我还怀疑新的ETag(在破折号之前)仍然是MD5哈希,但是在某种程度上从分段上传中包含了一些元数据.
有谁知道如何使用与Amazon S3相同的算法计算ETag?
我已通过s3cmd命令将20000个文件移动到AWS S3.现在我想为所有图像添加缓存控制(.jpg)
这些文件位于(s3:// bucket-name/images /)中.如何通过s3cmd为所有图像添加缓存控制,还是有其他方法来添加标题?
谢谢
是否有现有的解决方案来删除x天以前的任何文件?
我试过了两个s3cmd:
$ s3cmd -r -f -v del s3://my-versioned-bucket/
Run Code Online (Sandbox Code Playgroud)
和AWS CLI:
$ aws s3 rm s3://my-versioned-bucket/ --recursive
Run Code Online (Sandbox Code Playgroud)
但是这两个命令都只是DELETE向S3 添加标记.删除存储桶的命令也不起作用(来自AWS CLI):
$ aws s3 rb s3://my-versioned-bucket/ --force
Cleaning up. Please wait...
Completed 1 part(s) with ... file(s) remaining
remove_bucket failed: s3://my-versioned-bucket/ A client error (BucketNotEmpty) occurred when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
Run Code Online (Sandbox Code Playgroud)
好吧怎么办?他们的文档中没有关于此的信息.S3Cmd说它是一个"全功能"的S3命令行工具,但它没有引用除自己以外的版本.有没有办法在不使用网络界面的情况下做到这一点,这将永远需要我保持我的笔记本电脑?
command-line-interface amazon-s3 amazon-web-services s3cmd aws-cli
我正在考虑将我的静态网站重新部署到Amazon S3.我需要自动部署,所以我一直在为这些任务寻找API.我对不同的选择感到有点困惑.
问题:s3cmd,Python库boto和AWS CLI有什么区别?
如何在使用aws s3 syn时排除多个文件夹?
我试过了 :
# aws s3 sync s3://inksedge-app-file-storage-bucket-prod-env s3://inksedge-app-file-storage-bucket-test-env --exclude 'reportTemplate/* orders/* customers/*'
Run Code Online (Sandbox Code Playgroud)
但它仍在为文件夹"客户"进行同步
输出:
copy: s3://inksedge-app-file-storage-bucket-prod-env/customers/116/miniimages/IMG_4800.jpg to s3://inksedge-app-file-storage-bucket-test-env/customers/116/miniimages/IMG_4800.jpg
copy: s3://inksedge-app-file-storage-bucket-prod-env/customers/116/miniimages/DSC_0358.JPG to s3://inksedge-app-file-storage-bucket-test-env/customers/116/miniimages/DSC_0358.JPG
Run Code Online (Sandbox Code Playgroud) 我可以使用我的凭据通过S3cmd工具将一些内容推送到S3存储桶,使用s3cmd put contentfile S3:// test_bucket/test_file
问题是,我需要在没有安装s3cmd的其他计算机上从这个桶下载内容,但是他们已经安装了wget.
当我尝试用wget从我的桶中下载一些内容时,我得到了这个:
https://s3.amazonaws.com/test_bucket/test_file
--2013-08-14 18:17:40-- `https`://s3.amazonaws.com/test_bucket/test_file
Resolving s3.amazonaws.com (s3.amazonaws.com)... [ip_here]
Connecting to s3.amazonaws.com (s3.amazonaws.com)|ip_here|:port... connected.
HTTP request sent, awaiting response... 403 Forbidden
`2013`-08-14 18:17:40 ERROR 403: Forbidden.
Run Code Online (Sandbox Code Playgroud)
我已通过Amazon AWS Web控制台手动将此存储桶公开.
问题是:如何使用wget从S3存储桶下载内容?进入txt本地文件?
我正在为拥有2个独立AWS账户的客户做一些工作.我们需要将其中一个S3帐户的存储桶中的所有文件移动到第二个帐户的新存储桶中.
我们认为s3cmd允许这样,使用以下格式:
s3cmd cp s3://bucket1 s3://bucket2 --recursive
Run Code Online (Sandbox Code Playgroud)
但是,这只允许我使用一个帐户的密钥,而我无法指定第二个帐户的帐户.
有没有办法在不下载文件并将其再次上传到第二个帐户的情况下执行此操作?
我使用s3cmd将文件上传到我的S3服务器.我的问题是,当服务器上的目录不存在时,上传失败.如果不存在,我如何告诉s3cmd创建文件夹?我正在使用PHP.
我的s3中有一个目录,里面只有另一个目录,但我不知道它的名字.使用命令行"获取"工具,我想下载该目录,但它似乎不想.
结构看起来像:
my-production/top-dir/sub-dir/some-files.jpg
然后
s3cmd get s3://my-production/top-dir/* local-dir
"sub-dir"目录不下载.我是否必须获取目录名称,在本地创建目录,然后"获取"它的所有内容?