linux中的備份神器rsync實現遠程同步

1、rsync簡介html

rsync(Remote Sync,遠程同步)是一個開源的快速備份工具,能夠在不一樣主機之間鏡像同步整個目錄樹,支持增量備份,保持連接和權限,且採用優化的同步算法,傳輸前執行壓縮,所以很是適用於異地備份、鏡像服務器等應用,做爲一種最經常使用的文件備份工具,rsync每每是Linux和UNIX系統默認安裝的基本組件之一。算法

rsync的官方站點:http://rsync.samba.orgvim

rsync是一款快速增量備份工具,支持:安全

(1)本地複製;
(2)與其餘SSH同步;
(3)與rsync主機同步。服務器

在遠程同步任務中,負責發起rsync同步操做的客戶機稱爲發起端,而負責相應來自客戶機的rsync同步操做的服務器稱爲同步源。在同步過程當中,同步源負責提供文檔的原始位置,發起端應對該位置有讀取權限。如圖:tcp

 

 

 

 

2、配置rsync源工具

配置rsync源服務器大體分爲三步:
(1)創建rsync配置文件;
(2)爲備份帳戶建立數據文件;
(3)啓動rsync服務。
優化

(1)創建rsync配置文件ui

在CentOS 7系統以前/etc/rsyncd.conf文件默認不存在,CentOS 7開始已經有這樣的文件,而且其中放置了模板參考信息(根據實際狀況編寫須要的內容,注意格式)rest

[root@localhost ~]# vim /etc/rsyncd.conf
uid = nobody //啓用匿名用戶
gid = nobody
use chroot = yes //禁錮在源目錄
address = 192.168.1.1 //監聽地址
port 873 //監聽端口
log file = /var/log/rsyncd.log //日誌文件存放位置
pid file = /var/run/rsyncd.pid //存放進程ID的文件位置
hosts allow = 192.168.1.0/24 //容許訪問的客戶機地址
[wwwroot] //共享模塊名稱
path = /var/www/html //源目錄的實際路徑
comment = aaa //描述(能夠省略)
read only = no //是否爲只讀
dont compress = *.gz *.bz2 *.rar *.zip //同步時再也不壓縮的文件類型
auth users = backuper //受權帳戶
secrets file = /etc/rsyncd_users.db //存放帳戶信息的數據文件

 

基於安全性考慮,對於rsync的同步源最好僅容許以只讀方式作同步。另外,同步能夠採用匿名的方式,只要將其中的「auth users」和「secrets file」配置項去除便可!

 

(2)爲備份帳號建立數據文件

根據rsync的配置文件內容,建立帳號數據文件。每行一個用戶,用戶和密碼之間用冒號進行分隔。

[root@localhost ~]# vim /etc/rsyncd_users.db
backuper:123456

 

因爲帳號信息採用明文存放,所以須要調整文件權限,避免帳號信息泄露

[root@localhost ~]# chmod 600 /etc/rsyncd_users.db

 

備份用戶應對源目錄具備讀取權限。

[root@localhost ~]# ls -ld /var/www/html
drwxr-xr-x. 2 root root 6 11月 15 2016 /var/www/html

 

(3)啓動rsync服務

[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服務,須要:

[root@localhost ~]# kill $(cat /var/run/rsyncd.pid)
//中止服務
[root@localhost ~]# rsync --daemon
//啓動服務
[root@localhost ~]# kill -9 $(cat /var/run/rsyncd.pid)

或者直接使用「netstat -anpt | grep rsync」命令查出進程號,使用「kill 進程號」同樣。
使用第一種方法中止rsync服務必須刪除存放rsync服務進程的文件:

[root@localhost ~]# rm -rf /var/run/rsyncd.pid

 

3、使用rsync備份工具

配置好rsync同步源服務器以後,客戶端就可使用rsync工具來執行遠程同步了

rsync命令的選項:
-r:遞歸模式,包含目錄及子目錄中全部文件
-l:對於符號連接文件仍然複製爲符號連接文件
-p:保留文件的權限標記
-t:保留文件的時間標記
-g:保留文件的屬組標記(僅超級用戶使用)
-o:保留文件的屬主標記(僅超級用戶使用)
-D:保留設備文件及其餘特殊文件
-a:歸檔模式,遞歸併保留對象屬性,等同於 -rlptgoD
-v:顯示同步過程的詳細(verbose)信息
-z:在傳輸文件時進行壓縮(compress)
-H:保留硬鏈接文件
-A:保留ACL屬性信息
--delete:刪除目標位置有而原始位置沒有的文件
--checksum:根據對象的校驗和來決定是否跳過文件

 

rsync是一款快速增量備份工具,支持:
(1)本地複製;
(2)與其餘SSH同步;
(3)與rsync主機同步。

(1)本地複製

[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主機同步

[root@localhost ~]# rsync -avz backuper@192.168.1.1::wwwroot /root
或者
[root@localhost ~]# rsync -avz rsync://backuper@192.168.1.1/wwwroot /root

 

這兩種命令效果是同樣!
上傳只需將目錄調換順序便可(確保對上傳的目錄具備寫入權限)!
在同步源端輸入如下命令,方可執行寫入權限

[root@localhost ~]# chmod o+w /var/www/html
[root@localhost ~]# ls -ld /var/www/html
drwxr-xrwx. 2 root root 6 8月 17 16:47 /var/www/html
[root@localhost ~]# rsync -avz /root backuper@192.168.1.1::wwwroot

可是在現實工做環境中,備份工做一般是按計劃重複執行的,好比:

[root@localhost ~]# vim /root/123.pass
123456
//任意建立一個文件用於存放rsync受權用戶的密碼信息
[root@localhost ~]# chmod 600 /root/123.pass
//必須設定600權限,不然執行時將會報錯
[root@localhost ~]# crontab -e
//建立計劃任務
30 22 * * * /usr/bin/rsync -az --delete --password-file=/root/123.pass backuper@192.168.1.1::wwwroot /a
//天天晚上22:30執行腳本
[root@localhost ~]# systemctl restart crond
//從新啓動crond服務

關於crond計劃任務配置文件的格式(從上到下)

相關文章
相關標籤/搜索