rsync利用時の帯域制限・除外対象設定・SSH接続

  • 投稿日:
  • by ライブラリ編集局

この記事では、rsyncを用いて帯域制限、除外対象設定、SSHを使ってリモートサーバと同期の3つを説明します。
尚、OSについては、CentOS6(64bit)を対象としています。rsyncのインストールや設定はこちらを参照してください。

今回は、以下の要領で同期を行います。

[同期元]
 ホスト名     :denetmain.com[172.16.30.32]
 同期元ディレクトリ:/root/cptest/
 (※「/root/cptest/」ディレクトリ配下にはtest、test2、test3の3ファイルがあります。)

[同期先]
 ホスト名     :denetsub.com[172.16.30.31]
 同期先ディレクトリ:/home/backup/
 (※「/home/backup」ディレクトリ配下には、何もファイルは無いものとします。)

[条件]
 /root/cptest配下の、test2ファイルのみを除外して同期します。

 

rsyncコマンドのオプション指定

帯域制限、除外ファイル指定、SSH接続するには、それぞれ下記のオプションを使います。

帯域制限       :--bwlimit ○○(数値指定:単位KBps)
同期除外ファイル指定 :--exclude='(除外ファイル指定)'
同期対象ファイル指定 :--include='(対象ファイル指定)'
SSH接続        :-e ssh

また、この他に下記のオプションも追加で指定します。
rsyncを利用する時は、最低限「-a」と「-z」オプションは付けておいた方がよいでしょう。

-a:元のパーミッションやグループなどを保持したまま同期
-v:処理中の経過ファイル名を表示する
-z:データを圧縮する

帯域制限の単位

rsyncで指定する帯域は、[KBps]なので注意してください。(下記参考)

30Mbps = 3750KBps
10Mbps = 1250KBps
 1Mbps = 125KBps

 

コマンド実行

以上を踏まえて、今回の条件でデータ同期させるコマンドは以下のようになります。

#rsync -avz --bwlimit 125 --exclude='test2' -e ssh /root/cptest/ denetsub.com:/home/backup/

このコマンドでは、帯域を1Mbpsに制限し、「test2」ファイルを同期対象から外して、SSH通信でリモートサーバと同期する内容になります。

※コマンド実行後に、SSHのパスワードを要求されたら入力してください。
※日次処理などでパスワード入力を省きたい場合、公開鍵認証を利用することでパスワード入力なしにSSH通信ができます。詳細はこちらを参照してください。

コマンドを実行すると以下のような表示がされると思います。

sending incremental file list
./
test
test3

sent 125 bytes  received 53 bytes  39.56 bytes/sec
total size is 0  speedup is 0.00

結果として、以下のような状態になっていれば、「test2」以外のファイルが同期できたことになります。

同期元ホストの対象ディレクトリ(/root/cptest)の一覧
test  test2  test3 
 ↓
同期先ホストの対象ディレクトリ(/home/backup)の一覧
test  test3

以上で説明は終了です。