2012年4月4日

rsync備份資料

一直想做卻沒空寫記錄,今天把它做個記錄。
linux下一直有很強的備份工具rsync。在現今nas server不算是難事時,rsync可以快速的幫我們做到異地備援的方式。

在ubuntu下只要一條指令sudo apt-get install rsync就安裝好了
 到google中搜尋rsync教學,就有一堆文章。

參數說明
rsync --help
man rsync


我有一個想法是,建三個資料夾,在備份時先把第二個來rsync到第三個資料夾,再把第一個資料夾rsync到第二個,最後再把想備份的rsync到第一個資料夾,這樣就會有三個時間的備分檔。當我的備份資料夾是用nas server的nft或是iscsi掛起來,這樣就是異地備援了,加上rsync有所謂增量備援方式,可以花最少時間在做備分動作。

我寫了一個myrsync.sh內容大致如下(做好記得chmod +x變成可執行)
 #!/bin/sh
date >b.txt
/usr/bin/rsync-avzP --delete  /buckup/b02/ /buckup/b03
/usr/bin/rsync-avzP --delete  /buckup/b01/ /buckup/b02
/etc/init.d/mysql stop
 /usr/bin/rsync -avzP --delete /var/lib/mysql /buckup/b01

/usr/bin/rsync -avzP --delete /webdata/moodledata /buckup/b01
/usr/bin/rsync -avzP --delete /webdata/web /buckup/b01
/etc/init.d/mysql start

我試了一下第一次份3.3G也花不到2分鐘。--delete就是備份有異動的檔案,vP可以不用因為那是顯示過程和進度,如果是在背景做也看不到還會更快些,若是除錯則是有用的。a是檔案模式,z是壓縮資料。

接下來就是把這個sh用crontab中(每週備份一次)
vim /etc/crontab

0 1 * * 0 root /home/ezgo/myrsync.sh

這樣就會有三週的備份資料,如果想備4週就自己加吧。
最後提醒一下這是檔案的備份,別忘了還有資料庫!以mysql為例,資料夾位置是在/var/lib/mysql/,在備份前要停止mysql(/etc/init.d/mysql stop),再rsync資料夾,做完後就重啟mysql (/etc/init.d/mysql start)
張貼留言