Seafile从本地迁移到docker部署
由于一开始为ubuntu分配的磁盘空间太少,只有一百多G,后期越来越不够用了,而且环境也有些乱,所以打算重新迁移到新的磁盘上。Seafile需要配置的东西较多,但是最后终于成功了,虽然踩了不少坑,但是当完成以后发现还是很简单的。
源机器:
- 系统:ubuntu 19.10
- 使用的haiwen脚本安装:https://github.com/haiwen/seafile-server-installer-cn
这个脚本是直接安装到本机的,他会自动安装好Mysql
、nginx
、Seafile
.
备份数据文件
Seafile的文件在/opt/seafile
目录下:
1 | /opt/seafile |
这里面我们需要备份三个文件夹:
conf
seafile-data
seahub-data
其中conf
文件夹在新系统里是不需要的,但是其中的旧配置信息比较重要,可以备份一下,以备查阅。
备份数据库
这里可以用haiwen
提供的db_backup脚本来备份。不需要按照原教程配置自动备份,我们只用一次,修改一下脚本的数据库密码,直接执行即可。然后就可以得到一个压缩包,里面有三个sql
文件。
也可以使用以下命令手动备份(将[password]
替换为你的源数据库root密码):
1 | mysqldump -uroot -p[password] --opt ccnet_db > ccnet_db.sql |
官方命令:
1 | mysqldump -h [mysqlhost] -u[username] -p[password] --opt ccnet-db > /backup/databases/ccnet-db.sql.`date +"%Y-%m-%d-%H-%M-%S"` |
总之,我们得到三个备份文件:
ccnet_db.sql
seafile_db.sql
seahub_db.sql
目标机器
- 系统:ubuntu 18.04
- 按照官方的”用Docker部署Seafile“教程安装
- PS_1:我也试过用源机器的脚本进行安装,但是遇到了一些错误,而且安装到本机也很难清理,所以选择了docker
- PS_2:使用此docker安装时,执行
docker-compose -d
后请耐心等待,需要的时间可能较长(十到二十分钟),可以先用docker-compose
试一下,只要没报错就多等等。 - PS_3:docker的操作要使用root账号或者sudo
还原数据库
把数据库备份文件传到docker容器的临时目录(将[password]
替换为你的新数据库root密码)
1 | docker cp ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql |
官方命令:
1 | mysql -u[username] -p[password] ccnet-db < ccnet-db.sql.2013-10-19-16-00-05 |
将临时目录的SQL文件导入数据库执行
1 | docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p[password] ccnet_db < /tmp/ccnet_db.sql" |
还原数据文件
注意:docker教程中还原了conf
、seafile-data
、seahub-data
三个文件,但是当环境不同时,conf
是不能还原的,否则会page-unavailable
。
docker的数据文件位置取决于你在docker-compose.yml
中的配置,默认在/opt
目录下有seafile-data
、seafile-mysql
两个文件夹,
1 | /opt/ |
我们要做的就是用备份的seafile-data
、seahub-data
替换掉/opt/seafile-data/seafile/
下对应的两个文件夹
1 | cp -r seafile-data /opt/seafile-data/seafile/ |
大功告成
访问你在docker-compose.yml
中配置的Host Name
即可登录源机器的账号,内容也完全一样。