Linux文件同步工具-rsync

rsync

rsync用來同步數據的,經常用作拷貝數據,能夠遠程同步(相似於scp),也能夠本地同步(相似於cp),不一樣於scp和cp的是rsync還支持增量拷貝linux

man rsync

Local:  rsync [OPTION...] SRC... [DEST]
Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST](把遠程機器上的數據拷貝到本地上來)
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST(把本地數據推送到遠程去)

Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
Local:
# rsync -av /root/111/  /tmp/222/
Access via remote shell方式的例子(sshd通信的方式鏈接192.168.11.190遠程機器ip)
# rsync -av 192.168.11.190:/tmp/1.txt /tmp/     (遠程/tmp/1.txt拷貝到本機/tmp/下)
# rsync -av /tmp/123.txt 192.168.11.190:/tmp/   (本地數據推送到遠程上去)
Access via rsync daemon方式的例子(經過監聽端口讓客戶端去連它)
#rsync -av 192.168.11.190::aminglinux/123/1.txt /tmp/(從服務端拉到本地)
#rsync -av /tmp/1.txt 192.168.11.190::aminglinux/123/(從本地推到服務端)
aminglinux是模塊名字
由此語法可知,rsync有三種工做方式:
(1).本地文件系統上實現同步。命令行語法格式爲上述"Local"段的格式。
(2).本地主機使用遠程shell和遠程主機通訊。命令行語法格式爲上述"Access via remote shell"段的格式。
(3).本地主機經過網絡套接字鏈接遠程主機上的rsync daemon。命令行語法格式爲上述"Access via rsync daemon"段的格式。

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 傳輸時壓縮

rsync同步之ssh隧道方式

演示遠程同步,須要兩臺機器
一臺 192.168.1.110  (源機器)
一臺 192.168.1.109  (遠程機器)
# rsync -avPz 111/  192.168.1.109:/tmp/111/   (把本地111目錄下的文件同步到遠程機器上111目錄)
# rsync -avPz 192.168.1.109:/tmp/111/   ./111    如今刪除源機器上的111,想從遠程機器上同步到源機器
完整的寫法:
# rsync -avPz   111/  root@192.168.1.109:/tmp/111/      
# rsync -avPz   root@192.168.1.109:/tmp/111/   ./111    
用戶名@在這裏能夠省略,由於它能夠自動識別當前終端的用戶,若是是當前登陸的是root用戶就是root用戶,若是是當前登陸的是user1那就是user1

指定端口同步(遇到對方端口不是22的狀況)
# rsync -avPz -e "ssh -p 10022" 192.168.1.109:/tmp/111/ ./111   ssh除了22端口還有個端口是10022

rsync後臺服務方式同步

1寫配置文件

rsync服務的方式同步,它採用的是C/S架構:
後臺服務的方式,須要寫一個配置文件,把配置文件放在etc下,經過一個命令把它啓動,它會監聽一個端口,而後在客戶端跟服務端進行通訊

1寫配置文件
vim /etc/rsyncd.conf   
這個配置文件的名字能夠自定義,可是啓動的時候必定要指定這個配置文件,若是把配置文件放在etc下,而且命令爲rsync.conf它會自動的加載配置文件,不用咱們去指定
port=8730     默認是8730能夠省略,可是指定其餘端口必定要寫上
log file=/var/log/rsync.log   日誌文件
pid file=/var/run/rsync.pid   每一個進程都有一個pid
[test]        模塊名,以前那個格式裏的模塊名從那裏來的,就是從這裏定義的
path=/tmp/rsync  
use chroot=yes
max connections=4   最大鏈接數
read only=yes   只讀
list=yes      
uid=root    以那個用戶的身份去同步
gid=root
auth users=aming   以那個賬號同步
secrets file=/etc/rs.passwd    存密碼的文件
hosts allow=192.168.1.109    容許那些機器能夠連你

2rsyncd.conf配置文件詳解

port:指定在哪一個端口啓動rsyncd服務,默認是873端口。
 log file:指定日誌文件。
 pid file:指定pid文件,這個文件的做用涉及服務的啓動、中止等進程管理操做。
 address:指定啓動rsyncd服務的IP。假如你的機器有多個IP,就能夠指定由其中一個啓動rsyncd服務,若是不指定該參數,默認是在所有IP上啓動。
 []:指定模塊名,裏面內容自定義。
 path:指定數據存放的路徑。
 use chroot true|false:表示在傳輸文件前首先chroot到path參數所指定的目錄下。這樣作的緣由是實現額外的安全防禦,但缺點是須要以roots權限,而且不能備份指向外部的符號鏈接所指向的目錄文件。默認狀況下chroot值爲true,若是你的數據當中有軟鏈接文件,建議你設置成false。
 max connections:指定最大的鏈接數,默認是0,即沒有限制。
 read only ture|false:若是爲true,則不能上傳到該模塊指定的路徑下。
 list:表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定爲true則列出,false則隱藏。
 uid/gid:指定傳輸文件時以哪一個用戶/組的身份傳輸。
 auth users:指定傳輸時要使用的用戶名。
 secrets file:指定密碼文件,該參數連同上面的參數若是不指定,則不使用密碼驗證。注意該密碼文件的權限必定要是600。格式:用戶名:密碼
 hosts allow:表示被容許鏈接該模塊的主機,能夠是IP或者網段,若是是多個,中間用空格隔開。 
 當設置了auth users和secrets file後,客戶端連服務端也須要用用戶名密碼了,若想在命令行中帶上密碼,能夠設定一個密碼文件
 rsync -avL test@192.168.133.130::test/test1/  /tmp/test8/ --password-file=/etc/pass 
 其中/etc/pass內容就是一個密碼,權限要改成600

3啓動

# rsync --daemon
# ps aux|grep rsync
# netstat -lnp
# cat /var/log/rsync.log  查看一下日誌
修改/etc/rsync.conf配置文件不用重啓,即時生效
相關文章
相關標籤/搜索