### 概述
一般來說,Seafile 備份分為兩部分內容:
- Seafile 資料庫數據
- 數據庫
如果你根據我們的手冊來安裝 Seafile 服務器,你應該有如下目錄結構:
~~~
haiwen # 根目錄,haiwen 為示例文件名,如果你安裝到其他目錄則為相應的目錄名
--seafile-server-2.x.x # Seafile 安裝包解壓縮后目錄
--seafile-data # Seafile 配置文件和數據(如果你選擇默認方式)
--seahub-data # Seahub 數據
--ccnet # Ccnet 配置文件和數據
--seahub.db # Seahub 用到的 sqlite3 數據庫文件
--seahub_settings.py # seahub可選屬性配置文件
~~~
你所有的資料庫數據都存儲在 **haiwen** 目錄。
Seafile 也在數據庫中存儲一些重要的元數據。數據庫的命名和存儲路徑取決于你所使用的數據庫。
對于 SQLite, 數據庫文件也存儲在 **haiwen** 目錄。相應的數據文件如下:
- ccnet/PeerMgr/usermgr.db: 包含用戶信息
- ccnet/GroupMgr/groupmgr.db: 包含群組信息
- seafile-data/seafile.db: 包含資料庫元數據信息
- seahub.db: 包含網站前端(Seahub)所用到的數據庫表信息
對于 MySQL, 數據庫由管理員來創建,所以不同的人部署,可能會有不同的文件名。大體而言,有如下三個數據庫會被創建:
- ccnet-db: 包含用戶和群組信息
- seafile-db: 包含資料庫元數據信息
- seahub.db: 包含網站前端(seahub)所用到的數據庫表信息
### 備份步驟
備份需要如下三步:
1. 可選步: 如果你選擇 SQLite 作為數據庫,首先停掉 Seafile 服務器;
1. 備份數據庫;
1. 備份存放 Seafile 數據的目錄;
我們假設你的 Seafile 數據位于 `/data/haiwen` 目錄下,并且你想將其備份到 `/backup` 目錄(`/backup` 目錄可以是 NFS(網絡文件系統),可以是另一臺機器的 Windows 共享,或者是外部磁盤)。請在 `/backup` 目錄下創建如下目錄結構:
~~~
/backup
---- databases/ 包含數據庫備份
---- data/ 包含 Seafile 數據備份
~~~
### 備份數據庫
我們建議你每次將數據庫備份到另一個單獨文件,并且不要覆蓋最近一周來備份過的舊數據庫文件。
**MySQL**
假設你的數據庫名分別為 `ccnet-db`, `seafile-db` 和 `seahub-db`。`mysqldump` 會自動鎖住表,所以在你備份 MySql 數據庫的時候,不需要停掉 Seafile 服務器。通常因為數據庫表非常小,所以執行以下命令備份不會花太長時間。
~~~
mysqldump -h [mysqlhost] -u[username] -p[password] --opt ccnet-db > /backup/databases/ccnet-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
mysqldump -h [mysqlhost] -u[username] -p[password] --opt seafile-db > /backup/databases/seafile-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
mysqldump -h [mysqlhost] -u[username] -p[password] --opt seahub-db > /backup/databases/seahub-db.sql.`date +"%Y-%m-%d-%H-%M-%S"`
~~~
**SQLite**
對于 SQLite 數據庫,在備份前你需要停掉 Seafile 服務器。
~~~
sqlite3 /data/haiwen/ccnet/GroupMgr/groupmgr.db .dump > /backup/databases/groupmgr.db.bak.`date +"%Y-%m-%d-%H-%M-%S"`
sqlite3 /data/haiwen/ccnet/PeerMgr/usermgr.db .dump > /backup/databases/usermgr.db.bak.`date +"%Y-%m-%d-%H-%M-%S"`
sqlite3 /data/haiwen/seafile-data/seafile.db .dump > /backup/databases/seafile.db.bak.`date +"%Y-%m-%d-%H-%M-%S"`
sqlite3 /data/haiwen/seahub.db .dump > /backup/databases/seahub.db.bak.`date +"%Y-%m-%d-%H-%M-%S"`
~~~
### 備份 Seafile 資料庫數據
由于所有的數據文件都存儲在 `/data/haiwen` 目錄, 備份整個目錄即可。你可以直接拷貝整個目錄到備份目錄,或者你也可以用 rsync 做增量備份。
直接拷貝整個數據目錄,
~~~
cp -R /data/haiwen /backup/data/haiwen-`date +"%Y-%m-%d-%H-%M-%S"`
~~~
這樣每次都會產生一個新的備份文件夾,完成后,可以刪掉舊的備份。
如果你有很多數據,拷貝整個數據目錄會花很多時間,這時你可以用rsync做增量備份。
~~~
rsync -az /data/haiwen /backup/data
~~~
這個命令數據備份到 `/backup/data/haiwen` 下。
** 讓拷貝和 rsync 過程成功結束是非常重要的,否則你最近的一些數據將會丟失。**
### 恢復備份
如果你當前的 Seafile 服務器已經壞掉,將使用另一臺機器來提供服務,需要恢復數據:
1. 假設在新機器中,Seafile 也被部署在了 `/data/haiwen` 目錄中,拷貝 `/backup/data/haiwen` 到新機器中即可。
1. 恢復數據庫。
### 恢復數據庫
現在你已經擁有了數據庫備份文件,你可以按如下步驟來進行恢復。
**MySQL**
~~~
mysql -u[username] -p[password] ccnet-db < ccnet-db.sql.2013-10-19-16-00-05
mysql -u[username] -p[password] seafile-db < seafile-db.sql.2013-10-19-16-00-20
mysql -u[username] -p[password] seahub-db.sql.2013-10-19-16-01-05
~~~
**SQLite**
~~~
cd /data/haiwen
mv ccnet/PeerMgr/usermgr.db ccnet/PeerMgr/usermgr.db.old
mv ccnet/GroupMgr/groupmgr.db ccnet/GroupMgr/groupmgr.db.old
mv seafile-data/seafile.db seafile-data/seafile.db.old
mv seahub.db seahub.db.old
sqlite3 ccnet/PeerMgr/usermgr.db < usermgr.db.bak.xxxx
sqlite3 ccnet/GroupMgr/groupmgr.db < groupmgr.db.bak.xxxx
sqlite3 seafile-data/seafile.db < seafile.db.bak.xxxx
sqlite3 seahub.db < seahub.db.bak.xxxx
~~~
- 介紹
- 概覽
- Seafile 組件
- 研發路線圖
- 常見問題解答
- 修改日志
- 我要參與
- Linux 下部署 Seafile 服務器
- 部署 Seafile 服務器(使用 SQLite)
- 部署 Seafile 服務器(使用 MySQL)
- Nginx 下配置 Seahub
- Nginx 下啟用 Https
- Apache 下配置 Seahub
- Apache 下啟用 Https
- Seafile LDAP 配置
- 開機啟動 Seafile
- 防火墻設置
- Logrotate 管理系統日志
- 使用 Memcached
- 使用 NAT
- 非根域名下部署 Seahub
- 從 SQLite 遷移至 MySQL
- 安裝常見問題
- 升級
- Windows 下部署 Seafile 服務器
- 下載安裝 Windows 版 Seafile 服務器
- 安裝 Seafile 為 Windows 服務
- 所用端口說明
- 升級
- 從 Windows 遷移到 Linux
- 垃圾回收
- 部署 Seafile 專業版服務器
- 下載安裝 Seafile 專業版服務器
- 從社區版遷移至專業版
- 升級
- Amazon S3 下安裝
- OpenStackSwift 下安裝
- Ceph 下安裝
- 配置選項
- 文件搜索說明
- 集群部署
- 集群中啟用搜索和后臺服務
- NFS 下集群安裝
- 常見問題解答
- 軟件許可協議
- 服務器個性化配置
- ccnet.conf
- seafile.conf
- seahub_settings.py
- 發送郵件提醒
- 個性化郵件提醒
- 用戶管理
- 存儲容量與文件上傳/下載大小限制
- 自定義 Web
- 管理員手冊
- 賬戶管理
- 日志
- 備份與恢復
- Seafile FSCK
- Seafile GC
- WebDAV 和 FUSE 擴展
- WebDAV 擴展
- FUSE 擴展
- 安全選項
- 安全特性
- 日志和審計
- 開發文檔
- 編譯 Seafile
- Linux
- Windows
- Max OS X
- Server
- 開發環境
- 編程規范
- Web API
- Python API
- 數據模型
- 服務器組件
- 同步算法