From 6e80aae648dc2a5f595b2c4fc9af20ba9a58b6b1 Mon Sep 17 00:00:00 2001 From: skywalker Date: Mon, 25 Mar 2024 17:20:21 +0800 Subject: [PATCH] Backup and Recovery for Seafile Docker --- manual/docker/deploy_seafile_with_docker.md | 76 +------------------ .../deploy_seafile_pro_with_docker.md | 76 +------------------ manual/maintain/backup_recovery.md | 76 +++++++++++++++++++ 3 files changed, 78 insertions(+), 150 deletions(-) diff --git a/manual/docker/deploy_seafile_with_docker.md b/manual/docker/deploy_seafile_with_docker.md index bd16a393..dc5a798e 100644 --- a/manual/docker/deploy_seafile_with_docker.md +++ b/manual/docker/deploy_seafile_with_docker.md @@ -236,81 +236,7 @@ docker compose up -d ## Backup and recovery -### Structure - -We assume your seafile volumns path is in `/opt/seafile-data`. And you want to backup to `/opt/seafile-backup` directory. -You can create a layout similar to the following in /opt/seafile-backup directory: - -``` -/opt/seafile-backup ----- databases/ MySQL contains database backup files ----- data/ Seafile contains backups of the data directory - -``` - -The data files to be backed up: - -``` -/opt/seafile-data/seafile/conf # configuration files -/opt/seafile-data/seafile/seafile-data # data of seafile -/opt/seafile-data/seafile/seahub-data # data of seahub - -``` - -### Backup - -Steps: - -1. Backup the databases; -2. Backup the seafile data directory; - -Backup Order: Database First or Data Directory First - -#### backing up Database: - -```bash -# 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/seafile-backup/databases -docker exec -it seafile-mysql mysqldump -uroot --opt ccnet_db > ccnet_db.sql -docker exec -it seafile-mysql mysqldump -uroot --opt seafile_db > seafile_db.sql -docker exec -it seafile-mysql mysqldump -uroot --opt seahub_db > seahub_db.sql -``` - -#### Backing up Seafile library data: - -##### To directly copy the whole data directory - -```bash -cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/ -cd /opt/seafile-backup/data && rm -rf ccnet -``` - -##### Use rsync to do incremental backup - -```bash -rsync -az /opt/seafile-data/seafile /opt/seafile-backup/data/ -cd /opt/seafile-backup/data && rm -rf ccnet -``` - -### Recovery - -#### Restore the databases: - -```bash -docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql -docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql -docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql - -docker exec -it seafile-mysql /bin/sh -c "mysql -uroot ccnet_db < /tmp/ccnet_db.sql" -docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seafile_db < /tmp/seafile_db.sql" -docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seahub_db < /tmp/seahub_db.sql" -``` - -### Restore the seafile data: - -```bash -cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/ -``` +Follow the instructions in [Backup and recovery for Seafile Docker](../maintain/backup_recovery.md) ## Garbage collection diff --git a/manual/docker/pro-edition/deploy_seafile_pro_with_docker.md b/manual/docker/pro-edition/deploy_seafile_pro_with_docker.md index bb01d2b8..0ab0be97 100644 --- a/manual/docker/pro-edition/deploy_seafile_pro_with_docker.md +++ b/manual/docker/pro-edition/deploy_seafile_pro_with_docker.md @@ -312,81 +312,7 @@ docker compose up -d ## Backup and Recovery -### Structure - -We assume your seafile volumns path is in `/opt/seafile-data`. And you want to backup to `/opt/seafile-backup` directory. -You can create a layout similar to the following in /opt/seafile-backup directory: - -``` -/opt/seafile-backup ----- databases/ MySQL contains database backup files ----- data/ Seafile contains backups of the data directory - -``` - -The data files to be backed up: - -``` -/opt/seafile-data/seafile/conf # configuration files -/opt/seafile-data/seafile/seafile-data # data of seafile -/opt/seafile-data/seafile/seahub-data # data of seahub - -``` - -### Backup - -Steps: - -1. Backup the databases; -2. Backup the seafile data directory; - -Backup Order: Database First or Data Directory First - -#### Backing up Database: - -``` -# 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/seafile-backup/databases -docker exec -it seafile-mysql mysqldump -uroot --opt ccnet_db > ccnet_db.sql -docker exec -it seafile-mysql mysqldump -uroot --opt seafile_db > seafile_db.sql -docker exec -it seafile-mysql mysqldump -uroot --opt seahub_db > seahub_db.sql -``` - -#### Backing up Seafile Library Data - -##### Copy the whole data directory directly - -``` -cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/ -cd /opt/seafile-backup/data && rm -rf ccnet -``` - -##### Use rsync to do incremental backup - -```bash -rsync -az /opt/seafile-data/seafile /opt/seafile-backup/data/ -cd /opt/seafile-backup/data && rm -rf ccnet -``` - -### Recovery - -#### Restoring the Databases - -``` -docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql -docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql -docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql - -docker exec -it seafile-mysql /bin/sh -c "mysql -uroot ccnet_db < /tmp/ccnet_db.sql" -docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seafile_db < /tmp/seafile_db.sql" -docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seahub_db < /tmp/seahub_db.sql" -``` - -#### Restoring the Seafile Library data - -``` -cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/ -``` +Follow the instructions in [Backup and recovery for Seafile Docker](../../maintain/backup_recovery.md) ## Garbage Collection diff --git a/manual/maintain/backup_recovery.md b/manual/maintain/backup_recovery.md index 415bd98e..52a357c9 100644 --- a/manual/maintain/backup_recovery.md +++ b/manual/maintain/backup_recovery.md @@ -147,4 +147,80 @@ sqlite3 seahub.db < seahub.db.bak.xxxx ``` +## Backup and recovery for Seafile Docker +### Structure + +We assume your seafile volumns path is in `/opt/seafile-data`. And you want to backup to `/opt/seafile-backup` directory. +You can create a layout similar to the following in /opt/seafile-backup directory: + +``` +/opt/seafile-backup +---- databases/ MySQL contains database backup files +---- data/ Seafile contains backups of the data directory + +``` + +The data files to be backed up: + +``` +/opt/seafile-data/seafile/conf # configuration files +/opt/seafile-data/seafile/seafile-data # data of seafile +/opt/seafile-data/seafile/seahub-data # data of seahub + +``` + +### Backup + +Steps: + +1. Backup the databases; +2. Backup the seafile data directory; + +Backup Order: Database First or Data Directory First + +#### Backing up Database + +```bash +# 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/seafile-backup/databases +docker exec -it seafile-mysql mysqldump -uroot --opt ccnet_db > ccnet_db.sql +docker exec -it seafile-mysql mysqldump -uroot --opt seafile_db > seafile_db.sql +docker exec -it seafile-mysql mysqldump -uroot --opt seahub_db > seahub_db.sql +``` + +#### Backing up Seafile library data + +##### To directly copy the whole data directory + +```bash +cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/ +cd /opt/seafile-backup/data && rm -rf ccnet +``` + +##### Use rsync to do incremental backup + +```bash +rsync -az /opt/seafile-data/seafile /opt/seafile-backup/data/ +cd /opt/seafile-backup/data && rm -rf ccnet +``` + +### Recovery + +#### Restore the databases + +```bash +docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql +docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql +docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql + +docker exec -it seafile-mysql /bin/sh -c "mysql -uroot ccnet_db < /tmp/ccnet_db.sql" +docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seafile_db < /tmp/seafile_db.sql" +docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seahub_db < /tmp/seahub_db.sql" +``` + +### Restore the seafile data + +```bash +cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/ +```