天天看點

inotify-tools + rsync 實作Linux伺服器之間目錄實時同步

rsync浠嬬粛

Rsync鏄竴娆懼紑婧愮殑銆佸揩閫熺殑銆佸鍔熻兘鐨勩€佸彲瀹炵幇鍏ㄩ噺鍙婂閲忕殑鏈湴鎴栬繙绋嬫暟鎹悓姝ュ浠界殑浼樼宸ュ叿銆傚苟涓斿彲浠ヤ笉杩涜鏀瑰彉鍘熸湁鏁版嵁鐨勫睘鎬т俊鎭紝瀹炵幇鏁版嵁鐨勫浠借縼绉葷壒鎬с€? Rsync鏄竴涓揩閫熷拰闈炲父閫氱敤鐨勬枃浠跺鍒跺伐鍏楓€傚畠鑳芥湰鍦闆鍒訛紝杩滅▼澶嶅埗锛屾垨鑰呰繙绋嬪畧鎶よ繘绋嬫柟寮忓鍒躲€傚畠鎻愪緵浜嗗ぇ閲忕殑鍙傛暟鏉ユ帶鍒跺叾琛屼負鐨勫悇涓柟闈紝骞朵笖鍏佽闈炲父鐏墊椿鐨勬柟寮忔潵瀹炵幇鏂囦歡鐨勪紶杈撳鍒躲€傚畠浠ュ叾delta-transfer绠楁硶闂誨悕銆?

inotify-tools浠嬬粛

inotify-tools, 鏄竴娆緂oogle鍑虹殑鐢ㄤ簬鐩戞帶鏂囦歡绯葷粺鐨勮蔣浠躲€? inotify-tools鎻愪緵涓ょ宸ュ叿锛? 涓€鏄痠notifywait锛屽畠鏄敤鏉ョ洃鎺ф枃浠舵垨鐩綍鐨勫彉鍖栵紝浜屾槸inotifywatch锛屽畠鏄敤鏉ョ粺璁℃枃浠剁郴缁熻闂殑娆℃暟銆?

鏂囦歡瀹炴椂鍚屾鐨勬€濊礬

鏈嶅姟绔細琚姩鐨勬帴鏀朵紶杈撹繃鏉ョ殑鏁版嵁

瀹㈡埛绔細涓誨姩鎻愪緵鏁版嵁缁欐湇鍔$

瀹夎鎬濊礬锛氭湇鍔$鍜屽鎴風閮介渶瑕佸畨瑁卹sync杞歡銆傚洜涓烘垜杩欓噷鐞嗚В鐨勫鎴風鏄彁渚涙暟鎹粰鏈嶅姟绔紝鎵€浠ュ鎴風闇€瑕佸疄鏃剁洃娴嬫枃浠剁殑鍙樺姩锛岃繖閲岀殑瀹㈡埛绔渶瑕佸畨瑁卛notify杞歡銆?

瀹夎骞堕厤缃畆sync

  • 涓ょ瀹夎鏂瑰紡锛?
    • 鐩存帴浣跨敤yum鍛戒護瀹夎(鏈漢閲囩敤)
    yum -y install rsync
               
    • 浣跨敤缂栬瘧瀹夎
    [[email聽protected] ~]# cd /usr/local/src/
    [[email聽protected] src]# wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz 
    [[email聽protected] src]# tar zxvf rsync-3.0.9.tar.gz 
    [[email聽protected] src]# cd rsync-3.0.9
    [[email聽protected] rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
    [[email聽protected] rsync-3.0.9]# make
    [[email聽protected] rsync-3.0.9]# make install
               
  • 璁劇疆瀵嗙爜璁よ瘉鏂囦歡鍜岄厤缃枃浠?
    • 鍒涘緩瀵嗙爜璁よ瘉鏂囦歡(鏈嶅姟绔?
    [[email聽protected] ~]# mkdir -p /usr/local/rsync
    [[email聽protected] ~]# echo "web:123" > /usr/local/rsync/rsyncd.passwd
    [[email聽protected] ~]# cd /usr/local/rsync
    [[email聽protected] ~]# chmod 600 rsyncd.passwd
               
    • 鍒涘緩瀵嗙爜璁よ瘉鏂囦歡(瀹㈡埛绔?
    [[email聽protected] ~]# mkdir -p /usr/local/rsync
    [[email聽protected] ~]# echo "123" > /usr/local/rsync/rsync.passwd
    [[email聽protected] ~]# cd /usr/local/rsync
    [[email聽protected] ~]# chmod 600 rsync.passwd
               
    • 淇敼鏈嶅姟绔殑rsync閰嶇疆鏂囦歡

      瀹夎鏂瑰紡涓嶅悓寮曞彂鐨勯厤缃枃浠跺尯鍒細

      1.鐩存帴浣跨敤yum鍛戒護瀹夎鏃?/li>

    [[email聽protected] ~]# vi /etc/rsyncd.conf
    uid = root
    gid = root
    use chroot = no
    max connections = 200
    timeout = 1000
    transfer logging = yes
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    log format = %t %a %m %f %b
    port = 873
    ignore errors
    #read only = yes
    #address = 192.168.248.136
    
    [web]
    path = /home
    read only = false
    write only = yes
    hosts allow = 192.168.248.138 192.168.248.136
    hosts deny = *
    list = false
    auth users = web
    secrets file = /usr/local/rsync/rsyncd.passwd
    #read only = yes
    #exclude = test/ #涓嶅悓姝ョ殑鐩綍
               
    2.浣跨敤缂栬瘧瀹夎(涓句緥)
    [[email聽protected] rsync]# vi /usr/local/rsync/rsyncd.conf
    uid = root
    gid = root
    use chroot = no
    max connections = 4
    strict modes = yes
    hosts allow = 192.168.1.101 #鍙互绌烘牸锛屽厑璁稿涓?port = 873
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    
    [test]
    path = /home/test
    ignore errors
    read only = false
    list = false
    auth users = backup
    secrets file = /usr/local/rsync/rsyncd.passwd
               

    PS锛氭敞鎰忚繖閲岃灏唕ead only 淇敼涓?false, 鍥犱負鏄灏嗘枃浠跺悓姝ュ埌璇ユā鍧楃殑锛屽繀椤誨彲鍐? rsync鏈嶅姟绔厤缃枃浠跺垎鍏ㄥ眬瀹氫箟鍜屾ā鍧楀畾涔夛細

    鍏ㄥ眬瀹氫箟锛?

    #鍙互鍦ㄥ叏灞€瀹氫箟涓紝瀹氫箟妯″潡鍙傛暟銆?#rsync鐨剏es/no鍜宼rue/false閮芥槸閫氱敤鐨勶紝寤鴻鐢ㄤ竴绉嶅啓娉曘€?
    port = 873
    #鎸囧畾绔彛鍙鳳紙榛樿鏄?73锛夛紝鍙渷鐣ヤ笉鍐?
    motd file = /etc/rsyncd/rsyncd.motd
    #motd file 鎸囧畾涓€涓秷鎭彁绀虹殑鏂囦歡锛岃鑷繁鍐欐枃浠跺唴瀹癸紝涓€鑸兘涓嶅啓锛屼笉褰卞搷杩愯锛岀湅涓漢鍠滃ソ銆?
    #涓句緥锛氫綘鍦ㄦ湇鍔$瀹氫箟浜嗚繖涓枃浠訛紝鏂囦歡鍐呭涓篢his is motd file!锛屼綘鍦ㄥ鎴風浣跨敤rsync杩涜鍚屾鏈嶅姟绔椂锛岄鍏堜細鎻愮ずThis is motd file!鐒跺悗鍐嶈繘琛屽悓姝ャ€?
    pid file = /var/run/rsyncd.pid
    
    #灏唕sync瀹堟姢杩涚▼鐨凱ID鍐欏叆鎸囧畾鐨勬枃浠訛紝闃叉澶氫釜瀹堟姢杩涚▼杩愯锛堝綋kill鏉€姝籔ID鍚庯紝涔熻鍚屾椂鍒犻櫎浣犲畾涔夌殑rsyncd.pid锛屽惁鍒欐槸鏃犳硶鍚姩鐨勶紝鎴戣繖閲屾槸浠ョ嫭绔嬭繍琛宺sync鏈嶅姟鐨勬埅鍥撅級
    
    socket options 瀹氫箟TCP閫夐」锛岄粯璁ゅ叧闂?address 鍏抽棴鍗沖彲
    
    妯″潡瀹氫箟锛?
    [demo]
    #瀹氫箟妯″潡鐨勫悕瀛楋紝rsync灏嗛€氳繃杩欎釜鍚嶅瓧鏉ョ‘瀹氬悓姝ラ偅涓枃浠跺す锛岃繖涓ā鍧楁槸蹇呴』鐨?
    path = /opt/www
    #鎸囧畾闇€瑕佸悓姝ョ殑鐩綍鎵€鍦ㄤ綅缃?
    comment = whsir
    #娉ㄩ噴
    
    ignore errors
    #蹇界暐IO閿欒
    
    exclude = test1/ test2/
    #鎺掗櫎鐩綍锛屾帓闄や笉闇€瑕佸悓姝ョ殑鐩綍锛屽涓箣闂翠嬌鐢ㄧ┖鏍奸殧寮€
    
    --exclude-from=FILE
    #浠庢枃浠惰鍙栨帓闄ゆā寮忥紙灏嗘帓闄ょ殑鏂囦歡鎴栫洰褰曞啓鍦ㄤ竴涓枃浠朵腑锛屼竴琛屼竴涓枃浠舵垨鐩綍锛?
    --include-from=FILE
    #浠庢枃浠惰鍙栧寘鍚ā寮忥紙灏嗘帓闄ょ殑鏂囦歡鎴栫洰褰曞啓鍦ㄤ竴涓枃浠朵腑锛屼竴琛屼竴涓枃浠舵垨鐩綍锛?
    include = test3/ test4/
    #鎸囧畾鐩綍锛岃鍜宔xclude涓€鍚屼嬌鐢?
    charset = GBK
    #鎸囧畾缂栫爜鏍煎紡锛屼竴鑸槸鍦╳indows鍜宭inux涔嬮棿鍚屾鏃剁敤鍒幫紙Windows鍜孡inux绔痳sync鎺ㄦ媺鍚屾https://blog.whsir.com/post-527.html锛?
    auth users = user
    #鎸囧畾鐢ㄦ潵鍚屾鐨勭敤鎴鳳紝鍙嬌鐢ㄧ┖鏍兼垨鑰呴€楀彿闅斿紑澶氫釜鐢ㄦ埛鍚嶏紝濡傛灉涓嶄嬌鐢ㄦ閫夐」锛岄粯璁ゅ尶鍚嶏紝缁撳悎secrets file鏉ヤ嬌鐢?
    secrets file = /etc/rsyncd/rsyncd.secrets
    #鎸囧畾瀵嗙爜鏂囦歡鐨勮礬寰勶紝鍏跺疄鏂囦歡鍚庣紑涓嶄竴瀹氶潪鏄?secrets锛屽彲浠ュ啓鍦ㄥ叏灞€閰嶇疆閲屻€?etc/rsyncd/rsyncd.secrets鏂囦歡鍐呭鏍煎紡涓猴紝鐢ㄦ埛鍚?瀵嗙爜锛屾敞鎰忎腑闂寸敤鍐掑彿锛岀粨鍚坅uth users鏉ヤ嬌鐢?
    uid = nobody
    gid = nobody
    #鎸囧畾鐢ㄦ埛鍜岀敤鎴風粍鏉ユ墽琛岋紝榛樿nobody
    
    use chroot = false
    #鐢╟hroot锛屽湪浼犺緭鏂囦歡涔嬪墠锛屾湇鍔″櫒瀹堟姢绋嬪簭鍦ㄥ皢chroot 鍒版枃浠剁郴缁熶腑鐨勭洰褰曚腑锛岃繖鏍峰仛鐨勫ソ澶勬槸鍙兘淇濇姢绯葷粺琚畨瑁呮紡娲炰鏡琚殑鍙兘銆傜己鐐規槸闇€瑕佽秴绾х敤鎴鋒潈闄愩€傚彟澶栧绗﹀彿閾炬帴锛堣蔣閾炬帴锛夋枃浠訛紝灏嗕細鎺掗櫎鍦ㄥ銆傚緩璁甪alse锛屽綋鐒朵綘涔熷彲浠ュ啓鎴恘o銆?#chroot涓簍rue鏃跺繀椤諱嬌鐢╮oot鏉冮檺锛屼笖涓嶈兘澶囦喚path璺緞澶栫殑閾炬帴鏂囦歡
    
    write only = false
    #鏄惁绂佹瀹㈡埛绔笅杞斤紙瀹㈡埛绔敤rsync鎷夋湇鍔$鐨勬枃浠跺氨鐩稿綋浜庝笅杞斤級锛屽鏋滀負true锛屽垯瀹㈡埛绔笉鑳戒嬌鐢╮sync鎷夋湇鍔$鐨勬枃浠訛紝浼氭姤鍑轟竴涓嬮敊璇紝涓嶅啓杩欎釜鍙傛暟鐨勮瘽锛岄粯璁ゆ槸disabled锛涜嫢涓篺alse骞朵笖鏈嶅姟鍣ㄧ洰褰曚篃鍏鋒湁璇繪潈闄愬垯鍏佽涓嬭澆銆?
    ERROR: module is write only
    rsync error: syntax or usage error (code 1) at main.c(692) [sender=3.0.6]
    rsync: connection unexpectedly closed (5 bytes received so far) [receiver]
    rsync error: error in rsync protocol data stream (code 12) at io.c(600) [receiver=3.0.6]
    
    read only = false
    #鎸囧畾鏄惁鍏佽瀹㈡埛涓婁紶鏂囦歡銆傝嫢涓?true 鍒欎笉鍏佽涓婁紶锛堜篃灏辨槸瀹㈡埛绔敤rsync鎺級锛涜嫢涓篺alse骞朵笖鏈嶅姟鍣ㄧ洰褰曚篃鍏鋒湁璇誨啓鏉冮檺鍒欏厑璁鎬笂浼犮€?
    hosts allow=192.168.1.0/255.255.255.0 123.0.0.0/8 123.123.123.123
    #鎸囧畾鍝簺瀹㈡埛绔厑璁歌繛鎺ヨ妯″潡锛屽彲浠ユ槸鍗曚釜IP锛屼篃鍙互鎸囧畾鏁翠釜缃戞锛屾牸寮忔槸ip涓巌p涔嬮棿銆乮p鍜岀綉娈典箣闂淬€佺綉娈靛拰缃戞涔嬮棿瑕佺敤绌烘牸闅斿紑 锛屽鏋滃啓*鍒欐槸鎵€鏈?
    hosts deny = *
    #鎸囧畾鍝簺瀹㈡埛绔笉鍏佽杩炴帴璇ユā鍧楋紝*鏄墍鏈夛紙hosts allow瀹氫箟浜嗗鎴風鐨処P骞跺啓鍦ㄤ簡hosts deny鐨勫墠闈紝鍒欏彧鍏佽hosts allow瀹氫箟鐨処P杩涜杩炴帴锛岃繖閲岄渶瑕佹敞鎰廻osts allow鍜宧osts deny鐨勫厛鍚庨『搴忥級
    
    max connections = 3
    #骞跺彂杩炴帴鐨勬渶澶ф暟锛屽湪杈懼埌鏈€澶у€兼椂锛屽鏋滃啀鏈夊鎴風浣跨敤鍚屾浼氭彁绀哄涓嬩俊鎭細
    @ERROR: max connections (1) reached -- try again later
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
    鎻愮ず瀹㈡埛绔揪鍒版渶澶ц繛鎺ユ暟锛岀◢鍚庡皾璇曪紝濡傛灉鍐欐垚0鍒欎笉闄愬埗锛岃礋鍊肩鐢ㄦā鍧楋紝閰嶅悎lock file閿佹枃浠朵嬌鐢ㄣ€?濡傛灉灏唌ax connections鍜?var/log/rsync.lock瀹氫箟鍦╗妯″潡]涓嬶紝鍒欏彧瀵瑰綋鍓嶆ā鍧楃敓鏁堛€?濡傛灉灏唌ax connections鍜?var/log/rsync.lock瀹氫箟鍦ㄥ叏灞€涓嬶紝鍒欏涓嬮潰鎵€鏈夌殑妯″潡鐢熸晥锛屽鏋滆缃叏灞€max connections=1閭d箞濡傛灉浣犲畾涔夊涓ā鍧楋紝鍒欏悓鏃跺彧鑳借繛鎺ヤ竴涓紝鏍規嵁浣跨敤鎯呭喌杩涜璁劇疆锛侊紒锛?
    lock file = /var/run/rsyncd.lock
    #rsync瀹堟姢杩涚▼瀵規鏂囦歡浣跨敤璁闆綍閿佸畾锛岀‘淇濇湇鍔$[妯″潡]涓嶈秴杩囨渶澶ц繛鎺ユ暟锛岄厤鍚坢ax connections浣跨敤銆?
    timeout = 600
    #瓒呮椂鏃堕棿锛岃秴杩囪繖涓椂闂村皢浼氭柇寮€杩炴帴锛岀‘淇漴sync鏈嶅姟鍣ㄤ笉浼氫竴鐩寸瓑寰呬竴涓穿婧冪殑瀹㈡埛绔紝寤鴻璁劇疆600绉掞紝濡傛灉璁劇疆涓?锛屽垯琛ㄧず娌℃湁瓒呮椂銆?
    transfer logging = false
    #鏄惁璁闆綍浼犺緭鏃ュ織锛屽緩璁甪alse
    
    log file = /var/log/rsync.log
    #鎸囧畾rsync瀹堟姢杩涚▼鐨勬棩蹇楁枃浠?
    log format = %t %a %m %f %b
    #鏃ュ織鏂囦歡鏍煎紡锛屾牴鎹嚜韬儏鍐甸€夋嫨鏄惁浣跨敤
    
    list = false
    #鏄惁鏄劇ず鏁版嵁鐩綍锛屼粠瀹夊叏鐨勮搴﹀嚭鍙戯紝杩欓噷搴旇瑕乫alse
               
  • 浠ュ畧鎶よ繘绋嬫柟寮忓惎鍔╮sync鏈嶅姟鍣?鍙惎鍔ㄦ湇鍔$,瀹㈡埛绔笉闇€瑕佸惎鍔級
    • 浣跨敤yum鍛戒護瀹夎鏃?/li>
    rsync --daemon
               
    • 浣跨敤缂栬瘧瀹夎鏃?/li>
    rsync --daemon --config=/usr/local/rsync/rsyncd.conf
               
    • 鍔犲叆寮€鏈鴻嚜鍚姩
    echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf" >> /etc/rc.local
               
  • 楠岃瘉rsync鏄惁瀹夎鎴愬姛
    #瀹㈡埛绔笂鎵ц锛屽皢瀹㈡埛绔殑鏂囦歡鍚屾缁欐湇鍔$
    /usr/bin/rsync -vzrtopg --progress --password-file=/usr/local/rsync/rsync.passwd /opt/webstatic [email聽protected].168.1.9::web
    #瀹㈡埛绔笂鎵ц锛屽皢鏈嶅姟绔殑鏂囦歡鍚屾缁欏鎴風
    rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd [email聽protected].168.1.102::test /opt/webstatic
               
    • rsync鎿嶄綔鍛戒護
    -v, --verbose 璇︾粏妯″紡杈撳嚭 
    -q, --quiet 绮劇畝杈撳嚭妯″紡 
    -c, --checksum 鎵撳紑鏍¢獙寮€鍏籌紝寮哄埗瀵規枃浠朵紶杈撹繘琛屾牎楠?
    -a, --archive 褰掓。妯″紡锛岃〃绀轟互閫掑綊鏂瑰紡浼犺緭鏂囦歡锛屽苟淇濇寔鎵€鏈夋枃浠跺睘鎬э紝绛変簬-rlptgoD 
    -r, --recursive 瀵瑰瓙鐩綍浠ラ€掑綊妯″紡澶勭悊 
    -R, --relative 浣跨敤鐩稿璺緞淇℃伅 
    -b, --backup 鍒涘緩澶囦喚锛屼篃灏辨槸瀵逛簬鐩殑宸茬粡瀛樺湪鏈夊悓鏍風殑鏂囦歡鍚嶆椂锛屽皢鑰佺殑鏂囦歡閲嶆柊鍛藉悕涓簙filename銆傚彲浠ヤ嬌鐢?-suffix閫夐」鏉ユ寚瀹氫笉鍚岀殑澶囦喚鏂囦歡鍓嶇紑銆?
    --backup-dir 灏嗗浠芥枃浠?濡倊filename)瀛樻斁鍦ㄥ湪鐩綍涓嬨€?
    -suffix=SUFFIX 瀹氫箟澶囦喚鏂囦歡鍓嶇紑 
    -u, --update 浠呬粎杩涜鏇存柊锛屼篃灏辨槸璺寵繃鎵€鏈夊凡缁忓瓨鍦ㄤ簬DST锛屽苟涓旀枃浠舵椂闂存櫄浜庤澶囦喚鐨勬枃浠躲€?涓嶈鐩栨洿鏂扮殑鏂囦歡) 
    -l, --links 淇濈暀杞摼缁?
    -L, --copy-links 鎯沖寰呭父瑙勬枃浠朵竴鏍峰鐞嗚蔣閾劇粨 
    --copy-unsafe-links 浠呬粎鎷瘋礉鎸囧悜SRC璺緞鐩綍鏍戜互澶栫殑閾劇粨 
    --safe-links 蹇界暐鎸囧悜SRC璺緞鐩綍鏍戜互澶栫殑閾劇粨 
    -H, --hard-links 淇濈暀纭摼缁?
    -p, --perms 淇濇寔鏂囦歡鏉冮檺 
    -o, --owner 淇濇寔鏂囦歡灞炰富淇℃伅 
    -g, --group 淇濇寔鏂囦歡灞炵粍淇℃伅 
    -D, --devices 淇濇寔璁懼鏂囦歡淇℃伅 
    -t, --times 淇濇寔鏂囦歡鏃堕棿淇℃伅 
    -S, --sparse 瀵圭█鐤忔枃浠惰繘琛岀壒娈婂鐞嗕互鑺傜渷DST鐨勭┖闂?
    -n, --dry-run鐜闆疄鍝簺鏂囦歡灏嗚浼犺緭 
    -W, --whole-file 鎷瘋礉鏂囦歡锛屼笉杩涜澧為噺妫€娴?
    -x, --one-file-system 涓嶈璺ㄨ秺鏂囦歡绯葷粺杈圭晫 
    -B, --block-size=SIZE 妫€楠岀畻娉曚嬌鐢ㄧ殑鍧楀昂瀵革紝榛樿鏄?00瀛楄妭 
    -e, --rsh=COMMAND 鎸囧畾浣跨敤rsh銆乻sh鏂瑰紡杩涜鏁版嵁鍚屾 
    --rsync-path=PATH 鎸囧畾杩滅▼鏈嶅姟鍣ㄤ笂鐨剅sync鍛戒護鎵€鍦ㄨ礬寰勪俊鎭?
    -C, --cvs-exclude 浣跨敤鍜孋VS涓€鏍風殑鏂規硶鑷姩蹇界暐鏂囦歡锛岀敤鏉ユ帓闄ら偅浜涗笉甯屾湜浼犺緭鐨勬枃浠?
    --existing 浠呬粎鏇存柊閭d簺宸茬粡瀛樺湪浜嶥ST鐨勬枃浠訛紝鑰屼笉澶囦喚閭d簺鏂闆垱寤虹殑鏂囦歡 
    --delete 鍒犻櫎閭d簺DST涓璖RC娌℃湁鐨勬枃浠?
    --delete-excluded 鍚屾牱鍒犻櫎鎺ユ敹绔偅浜涜璇ラ€夐」鎸囧畾鎺掗櫎鐨勬枃浠?
    --delete-after 浼犺緭缁撴潫浠ュ悗鍐嶅垹闄?
    --ignore-errors 鍙婃椂鍑虹幇IO閿欒涔熻繘琛屽垹闄?
    --max-delete=NUM 鏈€澶氬垹闄UM涓枃浠?
    --partial 淇濈暀閭d簺鍥犳晠娌℃湁瀹屽叏浼犺緭鐨勬枃浠訛紝浠ユ槸鍔犲揩闅忓悗鐨勫啀娆′紶杈?
    --force 寮哄埗鍒犻櫎鐩綍锛屽嵆浣誇笉涓虹┖ 
    --numeric-ids 涓嶅皢鏁闆瓧鐨勭敤鎴峰拰缁処D鍖歸厤涓虹敤鎴峰悕鍜岀粍鍚?
    --timeout=TIME IP瓒呮椂鏃堕棿锛屽崟浣嶄負绉?
    -I, --ignore-times 涓嶈煩杩囬偅浜涙湁鍚屾牱鐨勬椂闂村拰闀垮害鐨勬枃浠?
    --size-only 褰撳喅瀹氭槸鍚﹁澶囦喚鏂囦歡鏃訛紝浠呬粎瀵熺湅鏂囦歡澶у皬鑰屼笉鑰冭檻鏂囦歡鏃堕棿 
    --modify-window=NUM 鍐沖畾鏂囦歡鏄惁鏃堕棿鐩稿悓鏃朵嬌鐢ㄧ殑鏃堕棿鎴崇獥鍙o紝榛樿涓? 
    -T --temp-dir=DIR 鍦―IR涓垱寤轟複鏃舵枃浠?
    --compare-dest=DIR 鍚屾牱姣旇緝DIR涓殑鏂囦歡鏉ュ喅瀹氭槸鍚﹂渶瑕佸浠?
    -P 绛夊悓浜?--partial 
    --progress 鏄劇ず澶囦喚杩囩▼ 
    -z, --compress 瀵瑰浠界殑鏂囦歡鍦ㄤ紶杈撴椂杩涜鍘嬬緝澶勭悊 
    --exclude=PATTERN 鎸囧畾鎺掗櫎涓嶉渶瑕佷紶杈撶殑鏂囦歡妯″紡 
    --include=PATTERN 鎸囧畾涓嶆帓闄よ€岄渶瑕佷紶杈撶殑鏂囦歡妯″紡 
    --exclude-from=FILE 鎺掗櫎FILE涓寚瀹氭ā寮忕殑鏂囦歡 
    --include-from=FILE 涓嶆帓闄ILE鎸囧畾妯″紡鍖歸厤鐨勬枃浠?
    --version 鎵撳嵃鐗堟湰淇℃伅 
    --address 缁戝畾鍒扮壒瀹氱殑鍦闆潃 
    --config=FILE 鎸囧畾鍏朵粬鐨勯厤缃枃浠訛紝涓嶄嬌鐢ㄩ粯璁ょ殑rsyncd.conf鏂囦歡 
    --port=PORT 鎸囧畾鍏朵粬鐨剅sync鏈嶅姟绔彛
    --blocking-io 瀵矽繙绋媠hell浣跨敤闃誨IO 
    -stats 缁欏嚭鏌愪簺鏂囦歡鐨勪紶杈撶姸鎬?
    --progress 鍦ㄤ紶杈撴椂鐜闆疄浼犺緭杩囩▼ 
    --log-format=formAT 鎸囧畾鏃ュ織鏂囦歡鏍煎紡 
    --password-file=FILE 浠嶧ILE涓緱鍒闆瘑鐮?
    --bwlimit=KBPS 闄愬埗I/O甯﹀锛孠Bytes per second 
    -h, --help 鏄劇ず甯姪淇℃伅 
    涓€鑸悓姝ヤ紶杈撶洰褰曢兘浣跨敤azv閫夐」. 
               

瀹夎骞堕厤缃甶notify

  • 瀹夎inotify

    ps:鍦ㄥ鎴風(灏辨槸瑕佺洃娴嬫枃浠跺彉鍖栫殑閭g)瀹夎inotify銆?

    [[email聽protected] rsync]# cd /usr/local/src/
    [[email聽protected] src]# wget --no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 
    [[email聽protected] src]# tar zxvf inotify-tools-3.14.tar.gz 
    [root[email聽protected] src]# cd inotify-tools-3.14 
    [[email聽protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify 
    [[email聽protected] inotify-tools-3.14]# make 
    [[email聽protected] inotify-tools-3.14]# make install 
               
  • 鍒涘緩rsync澶嶅埗鑴氭湰

    姝ら」鍔熻兘涓昏鏄皢瀹㈡埛绔殑鐩綍/home/fan/閲岀殑鍐呭锛屽鏋滀慨鏀逛簡锛堟棤璁烘槸娣誨姞銆佷慨鏀廣€佸垹闄ゆ枃浠訛級鑳藉閫氳繃inotify鐩戞帶鍒幫紝骞堕€氳繃rsync瀹炴椂鐨勫悓姝ョ粰鏈嶅姟绔殑/home閲岋紝涓嬮潰鏄€氳繃shell鑴氭湰瀹炵幇鐨勩€?

    [[email聽protected] rsync]# vi rsync.sh
    #!/bin/bash
    host=172.19.72.21
    src=/opt/web-static/static/upload
    des=web
    user=web
    
    /usr/local/inotify/bin/inotifywait -mrqs --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e 'modify,create,attrib,moved_to' $src | while read files
    do
    /usr/bin/rsync -vzrtopg --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des
    echo "${files} was rsynced" >>/data/logs/rsync.log 2>&1
    done
               
  • 鍙傛暟璇存槑
    inotifywait
    
    璇硶锛?inotifywait [-hcmrq] [-e ] [-t ] [--format ] [--timefmt ] [ ... ]
    鍙傛暟锛?-h,鈥揾elp
    杈撳嚭甯姪淇℃伅
    @
    鎺掗櫎涓嶉渶瑕佺洃瑙嗙殑鏂囦歡锛屽彲浠ユ槸鐩稿璺緞锛屼篃鍙互鏄粷瀵矽礬寰勩€?鈥揻romfile 
    浠庢枃浠惰鍙栭渶瑕佺洃瑙嗙殑鏂囦歡鎴栨帓闄ょ殑鏂囦歡锛屼竴涓枃浠朵竴琛岋紝鎺掗櫎鐨勬枃浠朵互@寮€澶淬€?-m, 鈥搈onitor
    鎺ユ敹鍒頒竴涓簨鎯呰€屼笉閫€鍑猴紝鏃犻檺鏈熷湴鎵ц銆傞粯璁ょ殑琛屼負鏄帴鏀跺埌涓€涓簨鎯呭悗绔嬪嵆閫€鍑恒€?-d, 鈥揹aemon
    璺熲€搈onitor涓€鏍鳳紝闄や簡鏄湪鍚庡彴杩愯锛岄渶瑕佹寚瀹氣€搊utfile鎶婁簨鎯呰緭鍑哄埌涓€涓枃浠躲€備篃鎰忓懗鐫€浣跨敤浜嗏€搒yslog銆?-o, 鈥搊utfile 
    杈撳嚭浜嬫儏鍒頒竴涓枃浠惰€屼笉鏄爣鍑嗚緭鍑恒€?-s, 鈥搒yslog
    杈撳嚭閿欒淇℃伅鍒扮郴缁熸棩蹇?-r, 鈥搑ecursive
    鐩戣涓€涓洰褰曚笅鐨勬墍鏈夊瓙鐩綍銆?-q, 鈥搎uiet
    鎸囧畾涓€娆★紝涓嶄細杈撳嚭璇︾粏淇℃伅锛屾寚瀹氫簩娆★紝闄や簡鑷村懡閿欒锛屼笉浼氳緭鍑轟換浣曚俊鎭€?鈥揺xclude 
    姝e垯鍖歸厤闇€瑕佹帓闄ょ殑鏂囦歡锛屽ぇ灏忓啓鏁忔劅銆?鈥揺xcludei 
    姝e垯鍖歸厤闇€瑕佹帓闄ょ殑鏂囦歡锛屽拷鐣ュぇ灏忓啓銆?-t , 鈥搕imeout 
    璁劇疆瓒呮椂鏃堕棿锛屽鏋滀負0锛屽垯鏃犻檺鏈熷湴鎵ц涓嬪幓銆?-e , 鈥揺vent 
    鎸囧畾鐩戣鐨勪簨浠躲€?-c, 鈥揷sv
    杈撳嚭csv鏍煎紡銆?鈥搕imefmt 
    鎸囧畾鏃堕棿鏍煎紡锛岀敤浜庘€揻ormat閫夐」涓殑%T鏍煎紡銆?鈥揻ormat 
    鎸囧畾杈撳嚭鏍煎紡銆?%w 琛ㄧず鍙戠敓浜嬩歡鐨勭洰褰?%f 琛ㄧず鍙戠敓浜嬩歡鐨勬枃浠?%e 琛ㄧず鍙戠敓鐨勪簨浠?%Xe 浜嬩歡浠モ€淴鈥濆垎闅?%T 浣跨敤鐢扁€搕imefmt瀹氫箟鐨勬椂闂存牸寮?
    inotifywatch
    
    璇硶锛?inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]
    鍙傛暟锛?-h, 鈥揾elp
    杈撳嚭甯姪淇℃伅
    -v, 鈥搗erbose
    杈撳嚭璇︾粏淇℃伅
    @
    鎺掗櫎涓嶉渶瑕佺洃瑙嗙殑鏂囦歡锛屽彲浠ユ槸鐩稿璺緞锛屼篃鍙互鏄粷瀵矽礬寰勩€?鈥揻romfile 
    浠庢枃浠惰鍙栭渶瑕佺洃瑙嗙殑鏂囦歡鎴栨帓闄ょ殑鏂囦歡锛屼竴涓枃浠朵竴琛岋紝鎺掗櫎鐨勬枃浠朵互@寮€澶淬€?-z, 鈥搝ero
    杈撳嚭琛ㄦ牸鐨勮鍜屽垪锛屽嵆浣垮厓绱犱負绌?鈥揺xclude 
    姝e垯鍖歸厤闇€瑕佹帓闄ょ殑鏂囦歡锛屽ぇ灏忓啓鏁忔劅銆?鈥揺xcludei 
    姝e垯鍖歸厤闇€瑕佹帓闄ょ殑鏂囦歡锛屽拷鐣ュぇ灏忓啓銆?-r, 鈥搑ecursive
    鐩戣涓€涓洰褰曚笅鐨勬墍鏈夊瓙鐩綍銆?-t , 鈥搕imeout 
    璁劇疆瓒呮椂鏃堕棿
    -e , 鈥揺vent 
    鍙洃鍚寚瀹氱殑浜嬩歡銆?-a , 鈥揳scending 
    浠ユ寚瀹氫簨浠跺崌搴忔帓鍒椼€?-d , 鈥揹escending 
    浠ユ寚瀹氫簨浠堕檷搴忔帓鍒椼€?           
    • 鍙洃鍚簨浠?/li>
    鍛戒護 璇存槑
    access 鏂囦歡璇誨彇
    modify 鏂囦歡鏇存敼
    attrib 鏂囦歡灞炴€ф洿鏀癸紝濡傛潈闄愶紝鏃堕棿鎴崇瓑銆?/td>
    close_write 浠ュ彲鍐欐ā寮忔墦寮€鐨勬枃浠惰鍏抽棴锛屼笉浠h〃姝ゆ枃浠朵竴瀹氬凡缁忓啓鍏ユ暟鎹€?/td>
    close_nowrite 浠ュ彧璇繪ā寮忔墦寮€鐨勬枃浠惰鍏抽棴銆?/td>
    close 鏂囦歡琚叧闂紝涓嶇瀹冩槸濡備綍鎵撳紑鐨勩€?/td>
    open 鏂囦歡鎵撳紑銆?/td>
    moved_to 涓€涓枃浠舵垨鐩綍绉誨姩鍒扮洃鍚殑鐩綍锛屽嵆浣挎槸鍦ㄥ悓涓€鐩綍鍐呯Щ鍔紝姝や簨浠朵篃瑙﹀彂銆?/td>
    moved_from 涓€涓枃浠舵垨鐩綍绉誨嚭鐩戝惉鐨勭洰褰曪紝鍗充嬌鏄湪鍚屼竴鐩綍鍐呯Щ鍔紝姝や簨浠朵篃瑙﹀彂銆?/td>
    move 鍖呮嫭moved_to鍜?moved_from
    move_self 鏂囦歡鎴栫洰褰曡绉婚櫎锛屼箣鍚庝笉鍐嶇洃鍚鏂囦歡鎴栫洰褰曘€?/td>
    create 鏂囦歡鎴栫洰褰曞垱寤?/td>
    delete 鏂囦歡鎴栫洰褰曞垹闄?/td>
    delete_self 鏂囦歡鎴栫洰褰曠Щ闄わ紝涔嬪悗涓嶅啀鐩戝惉姝ゆ枃浠舵垨鐩綍
    unmount 鏂囦歡绯葷粺鍙栨秷鎸傝澆锛屼箣鍚庝笉鍐嶇洃鍚鏂囦歡绯葷粺銆?/td>
  • 杩愯鑴氭湰
  • 鎶妑sync.sh鑴氭湰鍔犲叆鍒闆紑鏈哄惎鍔ㄩ」閲?

繼續閱讀