一. 場景:利用rsync實如今負載均衡狀況下,項目文件代碼實現指定頻率同步算法
二. 安裝:shell
1.檢測是否安裝rsync服務安全
rpm -qa|grep rsync
2.服務端和客戶端安裝rsync服務器
yum -y install rsync
也可源碼安裝網絡
rsync下載地址:http://rsync.samba.org/負載均衡
安裝方式 ssh
./configuretcp
make && make install測試
服務器A,B都安裝rsync服務。A爲主服務器,A服務器以服務器模式運行rsync,而B則以客戶端方式運行rsync。ui
當A服務器有文件變動時,B同步變動文件。一實現文件同步。
三. 服務端配置:
1. 服務器A配置
vi /etc/rsyncd.conf #根據本身的文件目錄而定
#[globle] strict modes = yes port = 873 uid = root gid = root user chroot = no max connections = 5 #同時的最大鏈接數 timeout = 600 pid file = /var/run/rsyncd.pid #進程的pid存放位置 lock file = /var/run/rsyncd.lock #locak文件位置 log file = /var/log/rsyncd.log #日誌文件位置 [eeetb.com-rsyncd] #創建一個同步名,服務器B經過此名稱得到同步位置 path = /home/wwwroot #須要同步的文件存放位置 ignore errors read only = no list = no hosts allow = ip,ip #容許服務器B地址,若是是內網可使用內網IP auth users = root #容許哪些用戶 secrets file = /etc/rsyncd.password #指定容許的用戶和密碼
2. 創建用戶密碼文件
vi /etc/rsyncd.password
root:123456 #容許的用戶和密碼
3. 修改防火牆策略,容許873端口(tcp/udp)
vi /etc/sysconfig/iptables #加入下面規則 -A INPUT -s ip -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
4. 啓動rsync服務端
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
添加rsyncd開機啓動
echo '/usr/bin/rsync --daemon --config=/ect/rsyncd.conf' >>/etc/rc.local
四. 客戶端配置:
1. 客戶端服務器B配置
vi /etc/rsyncd.password 123456 #服務器A設置的密碼
2. 啓動客戶端
/usr/bin/rsync -avzP --delete --progress --exclude=排除的文件 --password-file=/etc/rsyncd.password root@ip地址::eeetb.com-rsyncd /home/wwwroot/
3. 設置定時任務
略。。。
五. 注意:
六 . 基本參數
-v:顯示rsync過程當中詳細信息。可使用"-vvvv"獲取更詳細信息。 -P:顯示文件傳輸的進度信息。(實際上"-P"="--partial --progress",其中的"--progress"纔是顯示進度信息的)。 -n --dry-run :僅測試傳輸,而不實際傳輸。常和"-vvvv"配合使用來查看rsync是如何工做的。 -a --archive :歸檔模式,表示遞歸傳輸並保持文件屬性。等同於"-rtopgDl"。 -r --recursive:遞歸到目錄中去。 -t --times:保持mtime屬性。強烈建議任什麼時候候都加上"-t",不然目標文件mtime會設置爲系統時間,致使下次更新 :檢查出mtime不一樣從而致使增量傳輸無效。 -o --owner:保持owner屬性(屬主)。 -g --group:保持group屬性(屬組)。 -p --perms:保持perms屬性(權限,不包括特殊權限)。 -D :是"--device --specials"選項的組合,即也拷貝設備文件和特殊文件。 -l --links:若是文件是軟連接文件,則拷貝軟連接自己而非軟連接所指向的對象。 -z :傳輸時進行壓縮提升效率。 -R --relative:使用相對路徑。意味着將命令行中指定的全路徑而非路徑最尾部的文件名發送給服務端,包括它們的屬性。用法見下文示例。 --size-only :默認算法是檢查文件大小和mtime不一樣的文件,使用此選項將只檢查文件大小。 -u --update :僅在源mtime比目標已存在文件的mtime新時才拷貝。注意,該選項是接收端判斷的,不會影響刪除行爲。 -d --dirs :以不遞歸的方式拷貝目錄自己。默認遞歸時,若是源爲"dir1/file1",則不會拷貝dir1目錄,使用該選項將拷貝dir1但不拷貝file1。 --max-size :限制rsync傳輸的最大文件大小。可使用單位後綴,還能夠是一個小數值(例如:"--max-size=1.5m") --min-size :限制rsync傳輸的最小文件大小。這能夠用於禁止傳輸小文件或那些垃圾文件。 --exclude :指定排除規則來排除不須要傳輸的文件。 --delete :以SRC爲主,對DEST進行同步。多則刪之,少則補之。注意"--delete"是在接收端執行的,因此它是在 :exclude/include規則生效以後才執行的。 -b --backup :對目標上已存在的文件作一個備份,備份的文件名後默認使用"~"作後綴。 --backup-dir:指定備份文件的保存路徑。不指定時默認和待備份文件保存在同一目錄下。 -e :指定所要使用的遠程shell程序,默認爲ssh。 --port :鏈接daemon時使用的端口號,默認爲873端口。 --password-file:daemon模式時的密碼文件,能夠從中讀取密碼實現非交互式。注意,這不是遠程shell認證的密碼,而是rsync模塊認證的密碼。 -W --whole-file:rsync將再也不使用增量傳輸,而是全量傳輸。在網絡帶寬高於磁盤帶寬時,該選項比增量傳輸更高效。 --existing :要求只更新目標端已存在的文件,目標端還不存在的文件不傳輸。注意,使用相對路徑時若是上層目錄不存在也不會傳輸。 --ignore-existing:要求只更新目標端不存在的文件。和"--existing"結合使用有特殊功能,見下文示例。 --remove-source-files:要求刪除源端已經成功傳輸的文件。