rsync用來同步數據的,經常用作拷貝數據,能夠遠程同步(相似於scp),也能夠本地同步(相似於cp),不一樣於scp和cp的是rsync還支持增量拷貝linux
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"段的格式。
-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 傳輸時壓縮
演示遠程同步,須要兩臺機器 一臺 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服務的方式同步,它採用的是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 容許那些機器能夠連你
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
# rsync --daemon # ps aux|grep rsync # netstat -lnp # cat /var/log/rsync.log 查看一下日誌 修改/etc/rsync.conf配置文件不用重啓,即時生效