Paperclip:从文件系统存储迁移到Amazon S3

17

我有一个使用RoR开发的网站,用户可以上传照片。我使用paperclip gem来上传照片并将它们作为文件存储在服务器上。我计划使用Amazon S3来存储这些照片。我需要将现有的所有照片从服务器迁移到Amazon S3。请问有没有最佳的方法可以实现这个目标?谢谢!


2
注意到您之前提出了这个问题,但从未接受过答案。那些回答有帮助吗?您是否找到了其他解决方案?我也处于同样的位置,很想听听别人是如何解决的。 - Raphael
3个回答

9

您需要登录AWS控制台并创建一个存储图片的桶结构。无论是S3还是Paperclip都没有从文件系统进行批量迁移的工具,您需要使用s3cmd 工具来完成此操作。特别是,您需要关注 s3cmd sync 命令,类似于:

s3cmd sync ./public/system/images/ s3://imagesbucket

如果您的数据库中硬编码了任何图像URL(如markdown/template代码),这可能有点棘手。一种选择是手动更新您的URL以指向新的存储桶。或者,您可以使用rack-rewrite

7
您可以轻松地通过在Amazon S3上创建一个与您Rails应用程序中的public目录具有相同文件夹结构的存储桶来实现此目标。
例如,您在Amazon S3上创建了一个名为MyBucket的新存储桶,并在其中创建了一个名为images的文件夹。然后,您只需将Rails应用程序中images文件夹中的所有图像移动到该新存储桶的images文件夹中。
然后,您可以设置您的应用程序使用像这个答案描述的资产主机is it good to use S3 for Rails "public/images" and there an easy way to do it? 如果您正在使用image_tag或其他标签助手(javascripts、stylesheets等),那么它将在生产环境中使用该asset_host并正确生成指向您的S3存储桶的URL。

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接