1. 程式人生 > >Linux學習總結(二十八) 數據同步工具 rsync

Linux學習總結(二十八) 數據同步工具 rsync

rsync

rsync是linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步。

rsync格式
rsync [OPTION] … SRC   DEST
rsync [OPTION] … SRC   [user@]host:DEST
rsync [OPTION] … [user@]host:SRC   DEST

1 rsync常用選項

-a 包含-rtplgoD
-r 同步目錄時要加上,類似cp時的-r選項
-v 同步時顯示一些信息,讓我們知道同步的過程
-l 保留軟連接
-L 加上該選項後,同步軟鏈接時會把源文件給同步
-p 保持文件的權限屬性

-o 保持文件的屬主
-g 保持文件的屬組
-D 保持設備文件信息
-t 保持文件的時間屬性
--delete 刪除DEST中SRC沒有的文件
--exclude 過濾指定文件,如--exclude “logs”會把文件名包含logs的文件或者目錄過濾掉,不同步
-P 顯示同步過程,比如速率,比-v更加詳細
-u 加上該選項後,如果DEST中的文件比SRC新,則不同步
-z 傳輸時壓縮
我們發現a選項包含很多其他選項,因此我們常用的選項組合為av

2 ssh遠程同步

本地同步
rsync -av /etc/passwd /tmp/1.txt
通過ssh遠程同步

rsync -av test1/ 192.168.133.132:/tmp/test2/
rsync -av 192.168.133.132:/tmp/test2/ test1/
rsync -av -e "ssh -p 22" test1/ 192.168.133.132:/tmp/test2/  //有時需要指定端口

3 client-server方式同步

要編輯配置文件/etc/rsyncd.conf
啟動服務rsync --daemon
格式:rsync -av test1/ 192.168.133.130::module/dir/
ps aux |grep rsync 或者 netstat -lnp |grep rsync 查看服務是否啟動
下面是一個配置文件的樣例:

port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130
[test]
path=/root/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.133.132 1.1.1.1 2.2.2.2  192.168.133.0/24

配置文件詳解:
port 指定在哪個端口啟動,默認是873
log file :指定日誌文件
pid file 指定pid文件,這個文件的作用涉及服務的啟動、停止等進程管理操作。
adress:指定啟動rsyncd服務的IP。假如你的機器有多個IP,就可以指定由其中一個啟動rsyncd服務,如果不指定該參數,默認是在全部IP上啟動。
[] 指定模塊名稱
path:指定數據存放路徑
use chroot: true|false:表示在傳輸文件前首先chroot到path參數所指定的目錄下。這樣做的原因是實現額外的安全防護,但缺點是需要以root權限,並且不能備份指向外部的符號連接所指向的目錄文件。默認情況下chroot值為true,如果你的數據當中有軟連接文件,建議設置成false。
max connections:指定最大的連接數,默認是0,即沒有限制。
read only ture|false:如果為true,則不能上傳到該模塊指定的路徑下。
list:表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定為true則列出,false則隱藏。
uid/gid:指定傳輸文件時以哪個用戶/組的身份傳輸。
auth users:指定傳輸時要使用的用戶名。
secrets file:指定密碼文件,該參數連同上面的參數如果不指定,則不使用密碼驗證。註意該密碼文件的權限一定要是600。格式:用戶名:密碼
hosts allow:表示被允許連接該模塊的主機,可以是IP或者網段,如果是多個,中間用空格隔開。
設置密碼:
編輯剛才配置文件當中指定的密碼文件
echo "test:lv123" > /etc/rsyncd.passwd註意該密碼文件名稱是關鍵字,不能隨便該。
該文件權限要改為600
若想在命令行中帶上密碼,可以設定一個密碼文件
rsync -avL [email protected]::test/test1/ /tmp/test8/ --password-file=/etc/pass
其中/etc/pass內容就是一個密碼,權限也要改為600
我們也可以不指定認證賬戶,默認以root用戶同步。
我們把auth user 這行註釋掉
sed -i ‘s/auth users/#auth users/‘ /etc/rsyncd.conf

4 最後總結

總結下rsync幾個重要參數
rsync 通常使用的參數為 -av
-L 可以同步軟鏈接的源文件
-P 更加詳細的顯示同步過程
--delete 刪除目標文件中源文件沒有的文件,意思是刪除備份冗余
--exclude 過濾掉指定文件,不同步
-u 參考文件時間屬性,避免舊文件覆蓋新文件

Linux學習總結(二十八) 數據同步工具 rsync