我如何在我正在使用的测功机上克隆我的文件系统?

How do i clone my filesystem on the dyno i'm using?

我正在使用 Heroku,它是 Facebook 应用程序的免费托管解决方案。当我启动我的应用程序时,一切正常。但是当我使用以下命令克隆应用程序时,

heroku git:clone - 丰富的涂鸦

我收到了我放入服务器的所有文件。但我还想要由我的 php/flash 应用程序创建的文件。有一堆图像文件被写入文件系统并且 heroku git:clone -a graffiti-galore 命令,它不会引入文件系统上的新文件。我知道它们在文件系统上,但我不知道如何检索它们。

请问有人吗?

这是故意不可能的,并且违反了 Twelve-Factor architecture as well as several Heroku constraints like the ephemeral filesystem 的原则。

想象一下,您正在执行 git push,而您的服务器同时也更改了您正在为其推送更改的文件,导致如果没有您的手动干预就无法解决的冲突.

或者想象一下,如果您从 1 个测功机扩展到 20 个测功机,会发生什么。负载均衡器将请求随机发送到这些后端之一。一些图像上传最终在 dyno 1 上,一些在 dyno 2 上,一些在 dyno 3 上等等。您希望如何在所有实例之间同步该数据?如果您关闭一个具有不同步数据的服务器,会发生什么情况?崩溃时会发生什么?当您启动 100 个其他测功机时,100 GB 的存储上传会发生什么情况?这就是为什么您不能也不应该在本地文件系统上存储持久数据(例如用户上传)的原因;您需要改用专用的外部存储。有一篇关于上传到 S3 的专门文章 here,如果您正确设置了 CORS 详细信息,您也可以从 Flash 应用程序直接上传到 S3。

您可能还没有意识到 heroku ps:restartheroku ps:scale 和大约每 24 小时运行一次的自动化会像 git push heroku 一样导致您的测功机重新启动,这意味着本地文件系统中的所有更改都将丢失。