Linux學習總結(二十八) 數據同步工具 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 保持文件的權限屬性
-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