从本地回形针存储迁移到S3

时间:2014-01-03 20:02:52

标签: ruby-on-rails ruby amazon-s3 paperclip

我们最近搬到了一个新的虚拟主机,它提供的存储空间有限,所以我们试图将通过Paperclip gem上传的所有用户上传(头像,文件等)移动到Amazon S3。我有几百个文件都对应于我现在试图集中迁移的不同模型。

我发现this document引入了一个漂亮的回形针耙任务:

rake paperclip:refresh:missing_styles

这个命令为我做了一些工作,但是,我注意到它只设置文件结构而不发送任何数据 - 此外它没有设置使用:styles哈希定义的任何缩略图has_attached_file哈希1}}打电话。即,我在我的一个模型上设置了以下回形针:

class User < ActiveRecord::Base
  has_attached_file :avatar,
    :styles => {
      :thumb => "100x100#",
      :small  => "150x150>",
      :medium => "200x200" }
end

运行命令后,这是一些示例输出:

$ rake paperclip:refresh:missing_styles
Regenerating User -> avatar -> [thumb, :small, :medium]
Regenerating Mercury::Image -> image -> [:medium, :thumb]
Regenerating Profile -> image -> [:home_feature, :large, :medium, :thumb]
Regenerating Page -> preview -> [:portfolio]
Regenerating Category -> default_image -> [:home_feature, :large, :medium, :thumb]

导航到我的S3 Bucket我可以看到所有目录都已正确设置和每个附件,但仅适用于原始图像文件,它们都是0字节。我误解了这个命令的用法吗?我找不到任何其他工具将批量文件的整个目录上传到S3,如果有一个安全的工具已经覆盖了这个而不需要付款那么我就是张开耳朵。我已经尝试构建一个ruby脚本来插入他们的SDK并手动上传这些文件,但他们的Ruby文档并不是很好。

1 个答案:

答案 0 :(得分:21)

看起来我需要超越ruby,s3cmd似乎是这类工作最合适的工具。就我而言,sync命令可以解决问题:

s3cmd sync my-app/public/system/ s3://mybucket