本文系統Centos6.0
Server:(Centos) 192.168.182.130
Client:(lv2) 192.168.182.129
rsync是類unix系統下的數據鏡像備份工具,從軟件的命名上就可以看出來了——remote sync。
它的特性如下:
可以鏡像保存整個目錄樹和文件系統。
可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
無須特殊權限即可安裝。
快速:第一次同步時 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裡加入讓系統自動啟動等.
rsync -參數 用戶名@同步服務器的IP::rsyncd.conf中那個方括號裡(模塊名)的內容 本地存放路徑 如:
rsync –vzrtopg –delete --progress --exclude “*.log” [email protected]::lansggtest /root/backup --password-file=/etc/rsyncd.pass
該命令的解釋如下:
-v即--verbose 顯示傳輸的詳細信息
-z 即--compress 傳輸時對文件進行壓縮
-r 即—recursive 對子目錄進行遞歸處理
-t 即—times 保持文件的時間信息
-o即—owner 用來保持文件的屬主信息
-p 即 --perms 保持文件權限
-g 即 –group 保持文件屬組信息
-a 即 --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
--delete 以rsync服務器為基准保持數據同步,如果服務器刪除了某一文件,客戶端也會刪掉。
--progress 顯示出詳細的進度情況。
--exclude 用於排除不需要的文件類型。
[email protected]::lansggtest 指定備份的服務器和相關的模塊, lansgg 為服務器Server上面設置的rsync同步帳號;
/backup 指定備份的文件在客戶端上的存放位置 。
--password-file=/etc/rsyncd.pass 指定客戶端存放密碼文件的位置。
rsync簡單應用;
本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/
1、Server端安裝rsync;
[root@Centos ~]# yum install -y rsync
創建同步測試目錄並且創建同步用戶;
[root@Centos ~]# mkdir /root/test [root@Centos ~]# vim /etc/rsyncd.pass lansgg:lansgg123
修改密碼文件權限
[root@Centos ~]# chmod 600 /etc/rsyncd.pass
嗚呼,當你rpm -ql該包的時候,你會發現沒有什麼配置文件,下面就是自己寫配置文件了;
[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 #指定密碼文件位置
啟動rsync
[root@Centos ~]# rsync --daemon
在測試目錄中創建測試文件
2、Client操作;
安裝rsync
[root@lv2 ~]# yum install rsync -y
配置密碼文件,裡面寫入與服務器Server上相同的密碼,但不需要再寫帳號名。
[root@lv2 ~]# vim /etc/rysncd.pass lansgg123
mkdir /root/backup #此為創建本地備份目錄
開始同步;
rsync -vzrtopg --delete --progress --exclude "*.log" [email protected]::lansggtest /root/backup --password-file=/etc/rsyncd.pass
本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/
沒有log日志文件;
Ps:你可以將rsync --daemon寫入rc.local文件,
你可以將上面的命令寫入cron;實現定時同步;
下面是rsync+inotify實現數據實時同步;
上面已經表明,rsync無法實現實時的同步;所以才做了cron;這也是rsync的不足;
Inotify 是一個 Linux特性,它監控文件系統操作,比如讀取、寫入和創建。Inotify 反應靈敏,用法非常簡單,並且比 cron 任務的繁忙輪詢高效得多。Inotify 是一個 Linux 內核特性,它監控文件系統,並且及時向專門的應用程序發出相關的事件警告,比如刪除、讀、寫和卸載操作等。您還可以跟蹤活動的源頭和目標等細節。
要使用 inotify,必須具備一台帶有 2.6.13 或更新內核的 Linux 機器(以前的 Linux 內核版本使用更低級的文件監控器 dnotify)。如果不知道內核的版本,請轉到 shell,輸入 uname -a:
這就是常說的rsync可以下發多台機器配置文件的圖;其實和上面的案例是反過來,上面是client下載server端,進行備份,這個案例是client端進行上傳到多台server端,比如集群的話;
在Server端(三台)配置如上;
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 #指定密碼文件位置
下面是接著在Client端安裝inotify-tools
[root@Centos ~]# yum install inotify-tools -y
rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
inotifywait用於等待文件或文件集上的一個特定事件,可以監控任何文件和目錄設置,並且可以遞歸地監控整個目錄樹;
inotifywatch用於收集被監控的文件系統統計數據,包括每個inotify事件發生多少次等信息。
mkdir /root/backup
vim /etc/rsyncd.pass
lansgg123
編寫實時檢測同步腳本;
vi dataup.sh #!/bin/bash server1=192.168.182.130 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
inotifywait的相關參數:
-m 即 –monitor ,表示始終保持事件監聽狀態;
-r 即 –recursive,表示遞歸查詢目錄
-q 即 –quiet ,打印出監控事件
--timefmt,指定時間的輸出格式
--format,指定變化文件的詳細信息
sh inotify.sh &
echo “sh inotify.sh &” >> /etc/rc.local
現在可以在client;創建、刪除文件進行測試;
Client執行:
[root@node1 ~]# ./dataup.sh & [1] 10461 [root@node1 ~]# tail -f /tmp/rsync.log
本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/
當你在Client執行mkdir /root/backup/testtesttest (創建測試目錄)
你會發現Client客戶端日志:
你去查看server端;
全部已經同步了;
Ps:在執行search inotify的時候,發現一款incron;系統簡介:incron.i686 : Inotify cron system;大家可以去研究下;
本文出自 “Coffee_藍山” 博客,請務必保留此出處http://lansgg.blog.51cto.com/5675165/1227600