有两部分数据需要备份
如果你根据我们的手册设置 SeaTable 服务器,你应该有这样一个目录布局:
/opt/seatable/seatable-data/seatable/
├── ccnet
├── conf
├── db-data
├── logs
├── pids
├── scripts
├── seafile-data
└── seahub-data
└── storage-data
其中
SeaTable 还在一些数据库中存储一些重要的元数据.
MySQL 数据库:
备份顺序: 先备份数据库,然后调度大数据存储中的数据的备份,再备份数据目录
# It's recommended to backup the database to a separate file each time. Don't overwrite older database backups for at least a week.
cd /opt/seatable-backup/databases
docker exec -it seatable-mysql mysqldump -uroot -pMYSQL_ROOT_PASSWORD --opt ccnet_db > ccnet_db.sql
docker exec -it seatable-mysql mysqldump -uroot -pMYSQL_ROOT_PASSWORD --opt seafile_db > seafile_db.sql
docker exec -it seatable-mysql mysqldump -uroot -pMYSQL_ROOT_PASSWORD --opt dtable_db > dtable_db.sql
大数据存储中的数据 (dtable-db 中存储的数据) 每日会自动进行一次导出,如果你需要迁移服务器,那么你可以在对外停用服务后立即对数据进行一次导出,这样来保证迁移后的数据是最新的。
docker exec -it seatable /opt/seatable/scripts/seatable.sh backup-all
该命令结束后,storage-data 就会有一份 dtable-db 中数据的最新导出。
你可以直接复制整个数据目录或者用 rsync 增量备份。
直接复制整个目录
``` cp -R /opt/seatable/seatable-data/seatable /opt/seatable-backup/data/ cd /opt/seatable-backup/data && rm -rf ccnet logs
```
使用 rsync 增量备份
```bash rsync -az --exclude 'ccnet' --exclude 'logs' --exclude 'pids' --exclude 'db-data' /opt/seatable/seatable-data/seatable /opt/seatable-backup/data/
```
docker exec -i seatable-mysql /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD ccnet_db < /opt/seatable-backup/databases/ccnet_db.sql
docker exec -i seatable-mysql /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD seafile_db < /opt/seatable-backup/databases/seafile_db.sql
docker exec -i seatable-mysql /usr/bin/mysql -uroot -pMYSQL_ROOT_PASSWORD dtable_db < /opt/seatable-backup/databases/dtable_db.sql
cp -R /opt/seatable-backup/data/* /opt/seatable/seatable-data/
docker exec -it seatable /opt/seatable/scripts/seatable.sh restore-all
Last modified by seatable, 2022-06-08