sersync構成ドキュメント


詳細については、周洋ブログを参照してください.
sersyncの目的を使用して、ubuntuシステムの重要なデータをリアルタイムでバックアップして、rsyncサーバーの上で、以前はshellスクリプト+crontabを使って毎日1回のデータをrsyncサーバーの上で同期して、sersyncがあってリアルタイムで同期することができて更に爽やかです!
 
構成ドキュメントの変更
# cat sersync/confxml.xml

  
  
  
  
  1. <?xml version="1.0" encoding="ISO-8859-1"?> 
  2. <head version="2.5"> 
  3.     <host hostip="localhost" port="8008"></host> 
  4.     <debug start="false"/> 
  5.     <fileSystem xfs="false"/> 
  6.     <filter start="true"> 
  7.         <exclude expression="^qq_file/*"></exclude> 
  8.         <exclude expression="^\$RECYCLE.BIN/*"></exclude> 
  9.         <exclude expression="^mail/*"></exclude> 
  10.     </filter> 
  11.     <inotify> 
  12.         <delete start="true"/> 
  13.         <createFolder start="true"/> 
  14.         <createFile start="false"/> 
  15.         <closeWrite start="true"/> 
  16.         <moveFrom start="true"/> 
  17.         <moveTo start="true"/> 
  18.         <attrib start="false"/> 
  19.         <modify start="false"/> 
  20.     </inotify> 
  21.  
  22.     <sersync> 
  23.         <localpath watch="/mnt/isolinux"> 
  24.             <remote ip="192.168.5.82" name="ub"/> 
  25.         </localpath> 
  26.         <rsync> 
  27.             <!--<commonParams params="-artuz"/>--> 
  28.             <commonParams params="-avz"/> 
  29.             <auth start="true" users="dong" passwordfile="/home/administrator/pw"/> 
  30.             <userDefinedPort start="false" port="874"/><!-- port=874 --> 
  31.             <timeout start="false" time="100"/><!-- timeout=100 --> 
  32.             <ssh start="false"/> 
  33.         </rsync> 
  34.         <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> 
  35.         <crontab start="false" schedule="600"><!--600mins--> 
  36.             <crontabfilter start="false"> 
  37.                 <exclude expression="*.php"></exclude> 
  38.                 <exclude expression="info/*"></exclude> 
  39.             </crontabfilter> 
  40.         </crontab> 
  41.         <plugin start="false" name="command"/> 
  42.     </sersync> 
  43.  
  44.     <plugin name="command"> 
  45.         <param prefix="/bin/sh" suffix="" ignoreError="true"/>  <!--prefix /opt/tongbu/mmm.sh suffix--> 
  46.         <filter start="false"> 
  47.             <include expression="(.*)\.php"/> 
  48.             <include expression="(.*)\.sh"/> 
  49.         </filter> 
  50.     </plugin> 
  51.  
  52.     <plugin name="socket"> 
  53.         <localpath watch="/opt/tongbu"> 
  54.             <deshost ip="192.168.138.20" port="8009"/> 
  55.         </localpath> 
  56.     </plugin> 
  57.     <plugin name="refreshCDN"> 
  58.         <localpath watch="/data0/htdocs/cms.xoyo.com/site/"> 
  59.             <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/> 
  60.             <sendurl base="http://pic.xoyo.com/cms"/> 
  61.             <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> 
  62.         </localpath> 
  63.     </plugin> 
  64. </head> 

 
説明説明

<host hostip="localhost" port="8008"></host>

hostipとportはプラグインの保存フィールドであり、同期機能には何の役にも立たないので、デフォルトを保持すればよい.
フィルタファイルフィルタ機能
sersyncモニタのファイルでは、フィルタリングシステムの一時ファイル(「.」で始まり「~」で終わる)がデフォルトで、これらのファイルのほかにフィルタリングする必要があるファイルをカスタマイズできます.

<filter start="true">
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
</filter>

startをtrueに設定し、excludeラベルに正規表現を記入します.デフォルトでは、「.gz」で終わるファイルと、フィルタ監視ディレクトリの下にあるinfoパス(監視パス/info/*)の2つの例をフィルタします.必要に応じて追加できますが、オンになったら、自分でテストしてください.正規表現にエラーが発生した場合、コンソールにヒントが表示されます.rsyncのexclude機能を比較すると、フィルタリングされた経路は、モニタリングに参加せず、rsyncの通信量を大幅に減少させる.
inotifyモニタリングパラメータ設定(最適化)inotifyモニタリングパラメータを設定し、プロジェクトの特徴に応じてsrsyncを最適化できます.

<inotify>
<delete start="true"/>
<createFolder  start="true"/>
<createFile start="true"/>
</inotify>

ほとんどのアプリケーションでは、createFile(ファイルイベントのモニタリングオプション)をfalseに設定してパフォーマンスを向上させ、rsync通信を削減しようとします.監視ディレクトリにファイルをコピーするとcreateイベントとclose_が発生するためwriteイベントなのでcreateイベントをオフにすると、ファイルコピー終了時のイベントcloseのみがモニタされます.writeは、同様にファイルの完全な同期を実現することができます.注意:createFolderをtrueに維持し、createFolderをfalseに設定すると、生成されたディレクトリは監視されず、そのディレクトリの下のサブファイルとサブディレクトリも監視されません.特別な必要がない限り、オンにしてください.デフォルトでは、ファイル(ディレクトリ)の作成イベントとファイル(ディレクトリ)の削除イベントを監視します.プロジェクトでリモートターゲットサーバのファイル(ディレクトリ)を削除する必要がない場合は、deleteパラメータをfalseに設定できます.削除イベントは監視されません.
Debugオープン

<debug start="false"/>


trueに設定し、debugモードをオンにすると、sersyncが実行しているコンソールでinotifyイベントとrsync同期コマンドが印刷されます.
  XFSファイルシステム

<fileSystem xfs="false"/>

xfsファイルシステムのユーザーは、sersyncを正常に動作させるには、このオプションをオンにする必要があります.
ファイルモニタリングとリモート同期の設定

<localpath watch="/opt/tongbu">
<remote ip="192.168.0.104" name="tongbu1"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>

Rsyncパラメータ構成

<rsync>
<commonParams params="-artuz"/>
<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>

 
commonParamsはrsyncパラメータをユーザーがカスタマイズできます.デフォルトは-artuzです.
auth start="false"がtrueに設定されている場合、rsyncの認証モードで転送するには、userとpasswordfile(-password-file=/etc/rsync.pas)を構成して使用する必要があります.userDefinedPort  リモート同期ターゲットサーバのrsyncポートがデフォルトポートでない場合に使用します(-port=874).timeout rsyncのtimeout時間を設定します(-timeout=100).sshはrsync−e ssh方式を用いて伝送される.
失敗したログのステップ構成

<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>

失敗した転送については、再転送が行われ、再び失敗するとrsync_に書き込まれます.fail_logは、一定時間ごとにスクリプトを再転送し、スクリプトをクリアします.pathでログパスを設定できます.
 
Crontab定期全体同期機能

<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.gz"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>

crontabはモニタリングパスとリモートターゲットホストを一定時間ごとに全体的に同期することができ、いくつかの原因で2回の失敗した再送が失敗した可能性があります.この時、crontab機能をオンにすると、各サーバファイルが一致することをさらに保証することができます.ファイル量が大きい場合、crontabの時間間隔を大きくする必要があります.通信コストが増加する可能性があります.scheduleこのパラメータはcrontabを設定する間隔で、デフォルトは600分です.filterファイルフィルタ機能をオンにすると、crontab全体の同期にもフィルタを設定する必要があります.そうしないと、リアルタイム同期時にファイルがフィルタされますが、crontab全体の同期時にcrontabfilterを単独で設定しないと、フィルタするファイルがリモートに同期します.crontabのフィルタ正則はfilterフィルタとは異なり、フィルタファイルとディレクトリに対応する2つのインスタンスも与えられる.要するに、filterとcrontabが同時にオンになっている場合、crontabのcrontabfilterをオンにし、例によってfilterのフィルタに対応するように設定します.
プラグインの設定

<plugin start="false" name="command"/>

trueに設定すると、ファイルをリモートサーバに同期するとnameパラメータで指定したプラグインが呼び出されます.詳細はプラグイン設定を参照してください.