Aws-cli: s3 同步不保留跨存储桶的权限

创建于 2014-08-27  ·  34评论  ·  资料来源: aws/aws-cli

当我使用以下命令跨存储桶同步时:

aws s3 同步 s3://bucket1 s3://bucket2

我希望bucket2中的文件默认与bucket1中的文件具有相同的权限,因为它是“同步”

相反,他们只有默认权限。

feature-request s3 s3copy-extra-data s3sync

最有用的评论

由于我确实花了一些时间才发现权限未同步,因此可能将 s3 的文档更新为 s3 同步以提及仅同步未同步的数据会在将来节省其他人的时间。

再次感谢

所有34条评论

是否所有文件都具有相同的权限? 因为现在您可以使用--acl运行sync命令来设置权限。 但是,当前运行的没有其他可选参数的sync命令不会查找权限并确保在传输对象时,它与原始对象具有相同的权限。 我们将不得不添加一个额外的参数/功能来处理它。

否 - 如果所有文件都具有相同的权限,我可以使用 --acl 标志。

此功能确实是同步机制的必备功能,尤其是当您拥有数千个具有不同权限的文件并希望跨存储桶进行真正同步而不仅仅是文件副本时。

你知道另一种获得每个文件权限的方法,所以我可以很容易地编写脚本吗?

谢谢你的帮助。

是的,如果您在每个对象上运行aws s3api get-object-acl 。 你可以得到acl的。 这是命令的文档。
http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object-acl.html

好的 - 谢谢,这会起作用,但是这个功能在同步中仍然会受到极大的赞赏,如果不是默认情况下,--preserve-s3-acl 标志就可以了。

没问题。 会考虑功能。 我认为之所以没有实施,是因为操作本身可能成本很高。 要确定 s3 存储桶中的对象,会调用ListObjects ,但这不会返回每个对象的 acl。 反过来,我们将不得不返回并对列出的每个对象运行GetObjectAcl ,如果存储桶中有数千个项目,这可能需要一段时间。

由于我确实花了一些时间才发现权限未同步,因此可能将 s3 的文档更新为 s3 同步以提及仅同步未同步的数据会在将来节省其他人的时间。

再次感谢

有任何更新吗?

几周前,我添加了一个拉取请求 (#1535) 来解决这个问题(还有其他 S3 到 S3 的传输,比如copy )。 有机会考虑将其纳入吗?

嗨,我知道这是一个旧线程,但我们通过权限类型的同步解决了这个问题。 底线:您可以使用 --exclude 和 --include 按键名过滤同步,也可以指定每个同步的 ACL...因此,如果您有需要设置不同权限的键模式,请运行您需要多次使用不同的 ACL 选项同步命令。 这远非理想,但有效!

AWS 团队有什么想法吗?

我将我的 git 存储库推送到 S3 只是为了备份。 然后当我将它们同步回来时,各种权限都发生了变化。

我所有的可执行 bin 文件都不再是可执行的,并且 git status 会发出警告。

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1,是的,我的存储桶以句点命名,必须更改以通过云前端兼容 https。 同步到新的正确命名的存储桶。 无法访问文件。 阅读权限。 存在对象级权限。 没有更改存储桶中所有对象级别权限的命令。 想知道如何进行。 通过 aws GUI 的权限实际上在两个存储桶中看起来相同,但是当通过 cli 查找访问控制列表时,我看到原始存储桶有一个额外的受赠者,它没有被复制。
{
“受赠人”:{
"类型": "组",
"URI": " http://acs.amazonaws.com/groups/global/AllUsers "
},
“权限”:“阅读”
}

早上好!

我们将在 GitHub 上关闭此问题,作为我们迁移到UserVoice以处理涉及 AWS CLI 的功能请求的一部分。

这将使我们为您提供最重要的功能,让您更轻松地搜索和显示对您最关心的功能的支持,而不会因错误报告而淡化对话。

作为 UserVoice 的快速入门(如果还不熟悉的话):发布想法后,人们可以对想法进行投票,产品团队将直接对最受欢迎的建议做出回应。

我们已经从 GitHub 导入了现有的功能请求 - 在那里搜索这个问题!

别担心,为了后代,这个问题仍然存在于 GitHub 上。 由于它是将原始帖子以纯文本形式导入 UserVoice,因此我们仍会牢记 GitHub 问题上已经存在的评论和讨论。

GitHub 将继续作为报告错误的渠道。

再次,现在可以通过在以下位置搜索标题找到此问题: https :

-AWS 开发工具包和工具团队

此条目可以在 UserVoice 上特别找到: https :

@Asayre - 这可能是进行此讨论的错误地方,但您能否详细说明为什么亚马逊将 AWS CLI 上的讨论笨拙地分散在 GitHub 和 UserVoice 上?

功能请求在 GitHub 上似乎很合适。 过滤到功能请求相对容易,甚至可以按最受欢迎的请求排序:

screen shot 2018-03-24 at 12 34 47 am

GitHub 还可以轻松共享代码片段或参考其他问题(例如与此相关的 #1060),并且大部分 AWS CLI 用户群已经在 GitHub 上活跃。

根据社区反馈,我们决定将功能请求返回到 GitHub 问题。

任何人都想出一个体面的解决方案来完成这项工作? 非常需要的功能。

上述答案迫使 * 被公开阅读。 这不会保留权限。

进展如何? 我也遇到这个问题。 现在我只是使用 sync --include/exclude 来解决这个问题。

有人愿意付钱给我做这件事吗?

4年了,但这场噩梦还在继续。 我有 10 多个文件,并且在复制过程中都丢失了权限。 保持权限这样简单的事情怎么可能发生?

+1

对于来到这里的其他人,我可以使用它将一个存储桶复制到另一个存储桶并保留 ACL: https :

它也明显更快。

对我来说,我目前使用 s3 来备份我的工作文件夹。 这些包括 git repo,在所有权限更改后,我的 repo 一直吓坏了。

对我来说,解决方案最终是找到一种方法来重置每个 repo 的权限。 在 AWS 修复他们的垃圾之前,这就是我的解决方案。

git config --global --add alias.permission-reset '!git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'

我在这里找到了解决方案:

https://stackoverflow.com/questions/2517339/how-to-recover-the-file-permissions-to-what-git-thinks-the-file-should-be

你好,

我遇到了同样的问题 - 我有一个包含大量对象的存储桶,而其中一些应该可以公开访问。 我不得不将整个存储桶复制到另一个存储桶,同时保留 ACL,当然,手动设置 ACL 会花费我很多时间。

我在 python 中制作了这个简单的脚本,它将对象从一个存储桶复制到另一个存储桶,并为其设置了 ACL。

随意看看:
https://github.com/terminator9999/aws-s3-bucket-copy/

此页面是否有帮助?
0 / 5 - 0 等级