Seafile备份问题大全

我使用 ubuntu 服务器docker compose 部署的企业版最新版本,目前是10.0.10版本。在弄数据备份时遇到了很多的坑,走了很多弯路,跟大家分享下经验。
分享下我尝试过的所有办法,我所有的文件目录结构都和官方文档里的结构一致

  1. 备份/opt/seafile-data ,seafile-mysql文件夹,切记不能备份 es 的文件夹,不然启动新的 docker compose 会导致 es 报错,无法成功启动,这种备份方式是可行的,缺点就是备份出来的文件太大
  2. 按照官方文档的方式进行备份,但是官方文档埋了大坑。备份分为数据库数据备份和 seafile 数据备份。其中数据库备份按照文档所写导出表 sql 就行,关键在于备份 seafile-data目录里的内容官方文档写错了。
    只需要备份seafile-data 和 seahub-data就行,conf 目录不用备份,因为 mysql 下 seafile 用户的密码是随机生成的,如果新启动容器还用这个 conf 里的密码会导致 mysql 报权限错误,导致容器启动不起来。如果你对以前容器对 conf文件夹里的配置文件进行了一些修改,必须要备份 conf 目录,那你应该需要启动新的docker容器后,将新 conf 里的密码替换到备份 conf 里的配置文件里,同时 conf 文件夹里有多个文件里都配置了 mysql 的密码,例如 ccnet.conf seafile.conf等,所以你得需要全部替换。

    如果你按照官方文档里进行数据的恢复,你还会遇到第二个问题
    新容器启动后,能访问,但是访问旧的存储库出错

这个问题的在于还是官方文档写错了

见下图,上方是新容器的目录结构,下方是执行官方文档 cp 命令恢复 seafile 数据的目录结构,所以导致了存储库权限的问题。所以应该使用上图我图片备注的命令拷贝深一层的文件才是正确的。

以下是关于备份的一些讨论
企业版是支持配置对象存储的,所以我的备份方案是 seafile 配置对象存储和 云 mysql 数据库来实现无需手动备份。将对象存储和服务器选同一区域,服务器到 oss 走内网,不计算流量费用。因为我就两个人使用,数据量也不大,按腾讯云一个月 1G 差不多 1 毛钱计算,费用也是挺低的。云 mysql 和腾讯云 cos 对象存储方案我已成功部署。
(上述所缺图片是论坛限制新用户只能发一个图片)

可以只备份seafile-data,我的备份方法是导出三个数据库并且备份seafile-data。

然后重新搭建seafile 将seafile-data拷贝到新的里面,导入对应数据库,恢复完成

啊哈,我试过这个方案,问题是重启新的docker compose日志显示数据库访问被拒绝,因为你启动的 mysql 容器设置 seafile 用户的密码是随机的啊