【问题标题】:Heroku file backup without s3没有 s3 的 Heroku 文件备份
【发布时间】:2014-06-11 16:42:13
【问题描述】:

我有一个 Redmine (www.redmine.org) 安装推到 Heroku(雪松堆栈)上。在我本地的 Redmine 实例上,文件上传的工作方式是数据库简单地存储一些关于文件的数据,包括文件在磁盘上的名称和位置,而文件本身只是存储在磁盘上 [app-location]/files (Redmine是一个 ruby​​-on-rails 应用程序)。当我的 Redmine 项目被推送到 Heroku 时,找不到 files 目录。根据我对 Heroku 文件系统的了解,这不足为奇。但令人惊讶和困惑的是,文件上传仍然有效,而且我没有设置 s3,这是 Heroku 上文件上传的常见建议。我检查了 Heroku 数据库以获取有关文件上传的数据。

这是我找到文件的步骤。

heroku run rails c

and -获取最新文件的位置 - 运行:

Attachment.last.diskfile 

返回:

=> "/app/files/2014/06/140610184025_Very-Basic-Globe-icon.png"

Heroku 实例上根本不存在此路径(使用heroku run bash 并列出目录或运行查找)。我还下载了 Heroku 数据库的转储并在​​本地导入。数据库数据显示在我的本地实例上,但找不到该文件(不足为奇)。

所以我的问题是:

  1. Heroku 实例真正将文件存储在哪里?
  2. 有没有办法让我在本地备份这些文件而不依赖 在 Amazon s3 上?

这个应用程序应该保持相当小,所以我不关心大规模的可扩展性,我只是希望能够在需要时获得文件上传。

【问题讨论】:

    标签: ruby-on-rails heroku backup attachment redmine


    【解决方案1】:

    我知道这个问题有点老了,你可能已经找到了解决方案,但以防其他人偶然发现这个问题:

    1. Heroku 确实将文件存储在它所说的位置。当你运行 heroku run bash 时发生的事情是 Heroku 正在旋转一个 one-off dyno 来运行命令。这意味着您不会在实际运行您的应用程序的测功机中获得命令提示符。这就是您找不到您要查找的文件的原因。

    2. 目前没有官方addons 支持备份物理文件(仅限数据库),但是您可以编写自己的自定义脚本将数据备份到您选择的任何位置(s3 或其他)。为此,您可能需要使用 Heroku Scheduler 以类似 cron 的方式运行备份脚本。

    【讨论】:

    • 我刚刚注意到这个回复。谢谢你的时间。此后,我放弃了在 Heroku 上运行 Redmine,转而使用 Google 服务器。但是你的回答对于这个问题来说已经足够了。不过,我将来可能会考虑在 Heroku Scheduler 上使用脚本。谢谢。
    • 如何进入实际运行我的应用程序的测功机?我需要确认该文件是否确实存在。
    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 2020-02-11
    • 2015-10-30
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多