恢复问题

好吧,我现在刚做了一个备份,并检查了它是否能从 Docker 机器外部找到,结果发现不行。

vagrant@ubuntu-xenial:~$ sudo docker inspect -f "{{.Mounts}}" discourse
[{bind  /var/discourse/shared/standalone /shared   true rprivate} {bind  /var/discourse/shared/standalone/log/var-log /var/log   true rprivate}]

确实如此,不过我暂时忽略了这个情况。顺便一提,那个 rsync 操作是在运行 Discourse 的(Vagrant)机器外部完成的。

但按照你的建议,我现在做了以下操作:

  • 通过 vagrant ssh 进入该机器,然后在内部:
    • 使用 sudo docker exec -w /var/www/discourse -i discourse discourse backup 执行备份
    • 注意到文件路径:
      输出文件位于:/var/www/discourse/public/backups/default/discourse-2020-05-14-125606-v20200512064023.tar.gz
      
    • 在整个 Vagrant 机器中搜索该特定文件,但未找到
      find / -name discourse-2020-05-14-125606-v20200512064023.tar.gz 2>/dev/null
      
    • 但如果我进入 Docker 容器,文件就在那里
      root@ubuntu-xenial-discourse:/var/www/discourse/public/backups/default# ls
      discourse-2020-05-14-120436-v20200512064023.tar.gz  discourse-2020-05-14-121930-v20200512064023.tar.gz
      discourse-2020-05-14-121710-v20200512064023.tar.gz  discourse-2020-05-14-125606-v20200512064023.tar.gz
      

所以我的问题是:如果我创建了一个备份,我应该能从 Docker 外部看到它吗?

与此同时,我刚刚创建了一个 Vagrant 机器,并在标准的 /var/discourse 目录内执行了 git clone。唯一的“奇怪”之处是,我在容器内有一个 discourse.yml 文件,而不是 app.yml。