gpt4 book ai didi

ruby-on-rails - 使用回形针在 S3 存储桶之间传输一些(不是全部)文件

转载 作者:行者123 更新时间:2023-12-04 03:45:15 25 4
gpt4 key购买 nike

我有一个 Heroku 托管的应用程序,它使用 Paperclip 在 Amazon S3 上存储用户照片

我想根据一些内部逻辑将一些(不是全部)文件移动到一个新的存储桶(该应用程序是 Multi-Tenancy 的,我将 AWS 文件存储和我的 Postgres 数据库分离到单独的租户/模式中)

enter image description here

我有 2 个选项正在考虑(如上图所示)

选项 1 - 使用 AWS Cli 直接在存储桶之间移动文件

此选项是 AWS 原生的,但它的缺点是必须担心每个文件(缩略图等)的整个文件夹结构。移动文件涉及移动文件的所有各种样式 - 原始、中等大小、缩略图等。因此它不像复制 1 个文件那么简单。

它还会将所有内容复制到具有完全相同的文件夹/id 结构的新存储桶,我想避免这种情况,因为用户的相应数据库信息(例如 id)在我迁移时会发生变化他们在 postgres 数据库中

选项 2 - 使用回形针在本地下载每个文件并重新上传

这是一个很有吸引力的选择,因为它让回形针处理所有工作。

但是,paperclip 使用存储桶名称来构造文件的 URL。我需要它从 1 个桶中拉出并推到另一个桶中。有没有办法为每笔交易单独设置 bucket 名称?

最佳答案

Paperclip 使用存储桶名称构造远程文件的 URL,但这些目录和文件的名称不依赖于存储桶名称。如果您的文件或目录包含存储桶名称,那么您做错了,您应该先修复它。

执行以下操作:

  1. 使用 aws s3 sync OLD_BUCKET_URL public/system 命令将您的 public/system 目录与 oldbucket 同步

  2. 使用 Paperclip 使用 Ruby 脚本在本地执行目录和文件的更改

  3. 使用 aws s3 sync public/system NEW_BUCKET_URL 命令将您的 public/system 目录与 newbucket 同步(上传)。

关于ruby-on-rails - 使用回形针在 S3 存储桶之间传输一些(不是全部)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com