正確、有效的備份方案是保障系統(tǒng)及數(shù)據(jù)安全的重要手段,在服務(wù)器中,通常會結(jié)合計劃任務(wù)、Shell腳本來執(zhí)行本地備份,為了進(jìn)一步提高備份的可靠性,使用異地備份也是非常有必要的。
比如針對web站點的同步備份,如果想要實現(xiàn)快速、安全、高效的異地備份,就需要使用到——rsync。
rsync簡介
rsync(Remote Sync,遠(yuǎn)程同步)是一個開源的快速備份工具,可以在不同主機(jī)之間鏡像同步整個目錄樹,支持增量備份,保持鏈接和權(quán)限,且采用優(yōu)化的同步算法,傳輸前執(zhí)行壓縮,因此非常適用于異地備份、鏡像服務(wù)器等應(yīng)用。
rsync的官方站點:http://rsync.samba.org/ ,目前最新版本是3.1.3,由Wayne Davison.進(jìn)行維護(hù),作為一種最常用的文件備份工具,rsync往往是Linux和UNIX系統(tǒng)默認(rèn)安裝的基本組件之一。
rsync是一款快速增量備份工具,支持: (1)本地復(fù)制; (2)與其他SSH同步; (3)與rsync主機(jī)同步。
在遠(yuǎn)程同步任務(wù)中,負(fù)責(zé)發(fā)起rsync同步操作的客戶機(jī)稱為發(fā)起端,而負(fù)責(zé)相應(yīng)來自客戶機(jī)的rsync同步操作的服務(wù)器稱為同步源。在同步過程中,同步源負(fù)責(zé)提供文檔的原始位置,發(fā)起端應(yīng)對該位置有讀取權(quán)限。如圖:
配置rsync源
配置rsync源服務(wù)器大致分為三步: (1)建立rsync配置文件; (2)為備份賬戶創(chuàng)建數(shù)據(jù)文件; (3)啟動rsync服務(wù)。
(1)建立rsync配置文件
在CentOS 7系統(tǒng)之前/etc/rsyncd.conf文件默認(rèn)不存在,CentOS 7開始已經(jīng)有這樣的文件,并且其中放置了模板參考信息(根據(jù)實際情況編寫需要的內(nèi)容,注意格式)。
[root@localhost ~]# vim /etc/rsyncd.conf uid = nobody //啟用匿名用戶 gid = nobody use chroot = yes //禁錮在源目錄 address = 192.168.1.1 //監(jiān)聽地址 port 873 //監(jiān)聽端口 log file = /var/log/rsyncd.log //日志文件存放位置 pid file = /var/run/rsyncd.pid //存放進(jìn)程ID的文件位置 hosts allow = 192.168.1.0/24 //允許訪問的客戶機(jī)地址 [wwwroot] //共享模塊名稱 path = /var/www/html //源目錄的實際路徑 comment = aaa //描述(可以省略) read only = no //是否為只讀 dont compress = *.gz *.bz2 *.rar *.zip //同步時不再壓縮的文件類型 auth users = backuper //授權(quán)賬戶 secrets file = /etc/rsyncd_users.db //存放賬戶信息的數(shù)據(jù)文件
基于安全性考慮,對于rsync的同步源最好僅允許以只讀方式做同步。另外,同步可以采用匿名的方式,只要將其中的“auth users”和“secrets file”配置項去除即可!
(2)為備份賬號創(chuàng)建數(shù)據(jù)文件
根據(jù)rsync的配置文件內(nèi)容,創(chuàng)建賬號數(shù)據(jù)文件。每行一個用戶,用戶和密碼之間用冒號進(jìn)行分隔。
[root@localhost ~]# vim /etc/rsyncd_users.db backuper:123456
由于賬號信息采用明文存放,因此需要調(diào)整文件權(quán)限,避免賬號信息泄露。
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db
備份用戶應(yīng)對源目錄具有讀取權(quán)限。
[root@localhost ~]# ls -ld /var/www/html drwxr-xr-x. 2 root root 6 11月 15 2016 /var/www/html
(3)啟動rsync服務(wù)
[root@localhost ~]# rsync --daemon [root@localhost ~]# netstat -anpt | grep rsync tcp 0 0 192.168.1.1:873 0.0.0.0:* LISTEN 44001/rsync
如果需要重啟rsync服務(wù),需要:
[root@localhost ~]# kill $(cat /var/run/rsyncd.pid) //停止服務(wù) [root@localhost ~]# rsync --daemon //啟動服務(wù)
[root@localhost ~]# kill -9 $(cat /var/run/rsyncd.pid)
或者直接使用“netstat -anpt | grep rsync”命令查出進(jìn)程號,使用“kill 進(jìn)程號”一樣。
使用第一種方法停止rsync服務(wù)必須刪除存放rsync服務(wù)進(jìn)程的文件:
[root@localhost ~]# rm -rf /var/run/rsyncd.pid
使用rsync備份工具
配置好rsync同步源服務(wù)器之后,客戶端就可以使用rsync工具來執(zhí)行遠(yuǎn)程同步了。
rsync命令的選項: -r:遞歸模式,包含目錄及子目錄中所有文件 -l:對于符號鏈接文件仍然復(fù)制為符號鏈接文件 -p:保留文件的權(quán)限標(biāo)記 -t:保留文件的時間標(biāo)記 -g:保留文件的屬組標(biāo)記(僅超級用戶使用) -o:保留文件的屬主標(biāo)記(僅超級用戶使用) -D:保留設(shè)備文件及其他特殊文件 -a:歸檔模式,遞歸并保留對象屬性,等同于 -rlptgoD -v:顯示同步過程的詳細(xì)(verbose)信息 -z:在傳輸文件時進(jìn)行壓縮(compress) -H:保留硬連接文件 -A:保留ACL屬性信息 --delete:刪除目標(biāo)位置有而原始位置沒有的文件 --checksum:根據(jù)對象的校驗和來決定是否跳過文件
rsync是一款快速增量備份工具,支持:
(1)本地復(fù)制;
(2)與其他SSH同步;
(3)與rsync主機(jī)同步。
(1)本地復(fù)制
[root@localhost ~]# rsync /etc/passwd 123.txt //類似于cp命令
(2)與其他SSH同步
[root@localhost ~]# rsync -av root@192.168.1.2:/root/123.txt . root@192.168.1.2's password:
(3)與rsync主機(jī)同步
[root@localhost ~]# rsync -avz backuper@192.168.1.1::wwwroot /root 或者 [root@localhost ~]# rsync -avz rsync://backuper@192.168.1.1/wwwroot /root
這兩種命令效果是一樣!
上傳只需將目錄調(diào)換順序即可(確保對上傳的目錄具有寫入權(quán)限)!
在同步源端輸入以下命令,方可執(zhí)行寫入權(quán)限
[root@localhost ~]#chmod 777 /var/www/html [root@localhost ~]# rsync -avz /root backuper@192.168.1.1::wwwroot
但是在現(xiàn)實工作環(huán)境中,備份工作通常是按計劃重復(fù)執(zhí)行的,比如:
[root@localhost ~]# vim /root/123.pass 123456 //任意創(chuàng)建一個文件用于存放rsync授權(quán)用戶的密碼信息 [root@localhost ~]# chmod 600 /root/123.pass //必須設(shè)定600權(quán)限,否則執(zhí)行時將會報錯 [root@localhost ~]# crontab -e //創(chuàng)建計劃任務(wù) 30 22 * * * /usr/bin/rsync -az --delete --password-file=/root/123.pass backuper@192.168.1.1::wwwroot /a //每天晚上22:30執(zhí)行腳本 [root@localhost ~]# systemctl restart crond //重新啟動crond服務(wù)
關(guān)于crond計劃任務(wù)配置文件的格式(從上到下):