它的特性如下:
可以鏡像保存整個目錄樹和文件系統。
可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
無須特殊權限即可安裝。
快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的文件。rsync 在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
安全:可以使用scp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。
服務器端啓動
usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
可能需要root權限運行.
/etc/rsyncd/rsyncd.conf 是你剛纔編輯的rsyncd.conf的位置.
也可以在/etc/rc.d/rc.local里加入讓系統自動啓動等.
客戶端同步
1 | [root@Centos ~]# yum install -y rsync |
1 2 3 | [root@Centos ~]# mkdir /root/test [root@Centos ~]# vim /etc/rsyncd.pass lansgg:lansgg123 |
1 | [root@Centos ~]# chmod 600 /etc/rsyncd.pass |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [root@Centos ~]# vim /etc/rsyncd.conf uid=root #該選項指定當該模塊傳輸文件時守護進程應該具有的uid;默認值是 "nobody" , gid=root ##該選項指定當該模塊傳輸文件時守護進程應該具有的gid;默認值是”nobody”。 use chroot=no #不使用chroot max connections= 0 #設置最大連接數,默認爲 0 ,即無限制。你可以隨意設置, 10 、 20 都可以 strict mode=yes #設置是否檢查口令文件的權限 pid file=/ var /run/rsyncd.pid #指定rysnc進程的pid文件位置 lock file=/ var /lock/rsync.lock #指定支持max connections的鎖文件 log file=/ var /log/rsyncd.log #指定 rsync日誌輸出路徑 [lansggtest] #模塊名,可使用任意名稱 path=/root/test/ #同步源目錄路徑 comment=lansgg test #模塊描述 ignore errors #出現I/O錯誤時可忽略。 read only=no #是否只讀,設置爲no時客戶端可上傳文件。 write only=no #設置爲no 時客戶端可下載文件。 hosts allow= 192.168 . 182.129 #允許訪問主機 hosts deny=* #拒絕訪問的主機,*表示所有主機。 list= false #設置客戶端請求時是否列出該模塊, false 爲隱藏。 auth users=lansgg #設置連接時使用的用戶,即密碼文件裏面定義的用戶名。如果沒有這行,則表明是匿名 secrets file=/etc/rsyncd.pass #指定密碼文件位置 |
1 | [root@Centos ~]# rsync --daemon |
1 | [root@lv2 ~]# yum install rsync -y |
1 2 | [root@lv2 ~]# vim /etc/rysncd.pass lansgg123 |
1 | rsync -vzrtopg -- delete --progress --exclude "*.log" lansgg@www.jingjingdianying.com ::lansggtest /root/backup --password-file=/etc/rsyncd.pass |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | uid=root #該選項指定當該模塊傳輸文件時守護進程應該具有的uid;默認值是 "nobody" , gid=root ##該選項指定當該模塊傳輸文件時守護進程應該具有的gid;默認值是”nobody”。 use chroot=no #不使用chroot max connections= 0 #設置最大連接數,默認爲 0 ,即無限制。你可以隨意設置, 10 、 20 都可以 strict mode=yes #設置是否檢查口令文件的權限 pid file=/ var /run/rsyncd.pid #指定rysnc進程的pid文件位置 lock file=/ var /lock/rsync.lock #指定支持max connections的鎖文件 log file=/ var /log/rsyncd.log #指定 rsync日誌輸出路徑 [lansggtest] #模塊名,可使用任意名稱 path=/root/test/ #同步源目錄路徑 comment=lansgg test #模塊描述 ignore errors #出現I/O錯誤時可忽略。 read only=no #是否只讀,設置爲no時客戶端可上傳文件。 write only=no #設置爲no 時客戶端可下載文件。 hosts allow= 192.168 . 182.129 #允許訪問主機 hosts deny=* #拒絕訪問的主機,*表示所有主機。 list= false #設置客戶端請求時是否列出該模塊, false 爲隱藏。 auth users=lansgg #設置連接時使用的用戶,即密碼文件裏面定義的用戶名。如果沒有這行,則表明是匿名 secrets file=/etc/rsyncd.pass #指定密碼文件位置 |
1 | [root@Centos ~]# yum install inotify-tools -y |
1 2 3 | rpm -ql inotify-tools /usr/bin/inotifywait /usr/bin/inotifywatch |
1 2 3 | mkdir /root/backup
vim /etc/rsyncd.pass lansgg123 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | vi dataup.sh #!/bin/bash server1=http://dy.01chengde.cn server2= 192.168 . 182.131 server3= 192.168 . 182.132 src=/root/backup dstmode=mode1 user=lansgg /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify, delete ,create,attrib $src| while read files do rsync -vzrtopg -- delete --progress --password-file=/etc/rsyncd.pass $src $user@$server1::$dstmode rsync -vzrtopg -- delete --progress --password-file=/etc/rsyncd.pass $src $user@$server2::$dstmode rsync -vzrtopg -- delete --progress --password-file=/etc/rsyncd.pass $src $user@$server3::$dstmode echo "$files was rsynced" >> /tmp/rsync.log 2 >& 1 done |
1 2 3 | [root@node1 ~]# ./dataup.sh & [ 1 ] 10461 [root@node1 ~]# tail -f /tmp/rsync.log |