rsync實現遠程同步


一、rsync簡介

rsync(Remote Sync,遠程同步)是一個開源的快速備份工具,可以在不同主機之間鏡像同步整個目錄樹,支持增量備份,保持鏈接和權限,且采用優化的同步算法,傳輸前執行壓縮,因此非常適用於異地備份、鏡像服務器等應用。

rsync的官方站點:http://rsync.samba.org/ ,目前最新版本是3.1.3,由Wayne Davison.進行維護,作為一種最常用的文件備份工具,rsync往往是Linux和UNIX系統默認安裝的基本組件之一。

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

(1)本地復制;
(2)與其他SSH同步;
(3)與rsync主機同步。

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

 

 

 

二、配置rsync源

配置rsync源服務器大致分為三步:
(1)建立rsync配置文件;
(2)為備份賬戶創建數據文件;
(3)啟動rsync服務。

(1)建立rsync配置文件

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

[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

 

三、使用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計划任務配置文件的格式(從上到下)

 

 【參考鏈接】:

https://mp.weixin.qq.com/s/BUOcm1Gk0OleOzsVvFcskw


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM