CentOS5.5/rsync

Last-modified: 2011-03-15 (火) 10:52:20
最終更新:2011-03-15 (火) 10:52:20
アクセス数(合計):?
利用者; ? アクセス数(本日):? アクセス数(昨日):?

ファイルバックアップ rsync

サーバ障害に備え複数サーバ間でデータ転送を行いバックアップサーバを構築する。


rsync は、UNIXシステムにおいて、差分符号化を使ってデータ転送量を最小化し、遠隔地間のファイルやディレクトリの同期を行うアプリケーションソフトウェアである。

複数サーバ間でファイル同期を行うことにより、サーバ障害時に動作するバックアップサーバ構築に利用されることが多い。


目的

マスターサーバからスレーブサーバにファイルを転送し、マスターサーバ障害に備える。
コピー元(マスターサーバ)でrsyncを動作させ、コピー先(スレーブサーバ)にファイルを送信する。

構築条件

構築機器

作成環境

OS    CentOS 5.5 64bit版

サーバ作成条件

転送元サーバサーバIP192.168.0.10/24
ホスト名masterServer
user   hogehoge
userpasswdhogehogepass
バックアップ元/var
転送先サーバサーバIP192.168.0.20/24
ホスト名slaveServer
user   fugafuga
userpasswdfugafugapass
バックアップ先/home/fugafuga/backup

手順記入ルール

  • コマンド行頭記号で 「$」はユーザ権限 「#」はスーパーユーザー権限 を表示
  • コマンドが長くなる場合は、行末に「\」を記述し複数行に記述。

ファイル入手

サイト

今回インストールしたファイル

★CentOSに収録されているアプリを使用

rsync.x86_64                           2.6.8-3.1                  intra-repo

前準備

  1. CentOSインストール 実施
  2. yumリポジトリ設定 実施

転送元構築

インストール

【Telnet】

  • rootでログイン
$ su
パスワード:

(1)インストール

  • インストール
# yum install rsync

   :

Complete!

(2)インストール(xinetd)

  • インストール
# yum install xinetd

   :

Complete!

転送設定

(1)xinetd設定

【telnet】

# vi /etc/xinetd.d/rsync
service rsync
{
        disable = yes
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

  ↓

service rsync
{
        disable = no ←変更
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

(2)rsyncd.conf登録

  • rsyncd.conf登録
# vi /etc/rsyncd.conf
uid = root
gid = root
read only = no
hosts allow = 192.168.0.20
hosts deny = *
[backup]
path = /var/

※hosts allow記述例:
 エリア指定 「hosts allow = 192.168.0.20」
 複数指定時「hosts allow = 192.168.0.20 192.168.0.30」

(3)xinetd起動

# /etc/rc.d/init.d/xinetd start
xinetd を起動中:                                           [  OK  ]

転送先構築

インストール

【Telnet】

  • rootでログイン
$ su
パスワード:

(1)インストール

  • インストール
# yum install rsync

   :

Complete!

(2)crontabインストール

  • インストール(crontab実行)
# yum install vixie-cron
  • 起動
# /etc/rc.d/init.d/crond start
crond を起動中:                                            [  OK  ]
  • 常時起動登録
# chkconfig crond on
  • 確認
# chkconfig --list crond
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

動作試験

# rsync -avz root@192.168.0.10:/var/ /home/fugafuga/backup/
  :
Are you sure you want to continue connecting (yes/no)? yes

  :

root@192.168.0.10's password:

  :
★バックアップファイルが収集されること
※転送元指定:
 root@192.168.0.10:/var/ ← var配下全ファイルがbuckup配下に転送(varディレクトリは出来ない)
 root@192.168.0.10:/var  ← buckup配下にvarディレクトリが出来var配下全ファイルが転送、

自動転送登録

(1)ノンパスワード収集確認

  • 収集元サーバ側で「xinit.d」「rsyncd.conf」設定後以下を実行
# rsync -avz root@192.168.0.10::backup /home/fugafuga/backup/

★収集出来ること

(2)自動実行登録

  • クーロン確認
# crontab -l
no crontab for root
  • クーロン作成
# crontab -e
  • 追加
    15 02 * * *    /usr/bin/rsync -avz root@192.168.0.10::backup /home/fugafuga/backup/
  • 確認
# crontab -l
15 02 * * *    /usr/bin/rsync -avz root@192.168.0.10::backup /home/fugafuga/backup/

リストア

転送元ファイルにファイルを戻す場合、転送先から以下コマンドを実行

# rsync -avz /home/fugafuga/backup/ root@192.168.0.10:/var/

  :

root@192.168.0.10's password:

  :
  :

★リストア開始

Windows転送元構築

Windowsサーバの情報をLinuxサーバに自動転送できるようWindows側の設定を行う。

Windowsサーバ側設定

  • ファイルを解凍
    cwRsyncServer_4.0.6_Installer.zipを解凍 → cwRsyncServer_4.0.6_Installer.exe
  • インストーラー実行
    「Welcome to the cwRsyncServer 4.0.6 Setup Wizard」→「Next>」をクリック
    「License Agreement」→「I Agree」をクリック
    「Choose Install Location」→インストールフォルダを確認後「Next>」をクリック
    「Service Account」→「Install」 SvcCWRSYNCをクリック
    「Installation Complete」→「Close」クリック
  • rsync.conf設定
    「スタート」→「せべてのプログラム」→「cwRsyncServer」→「01.rsyncd.conf」※メモ帳
     
    use chroot = false
    strict modes = false
    hosts allow = *
    log file = rsyncd.log
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes

  ↓

uid = 0  #←追加
gid = 0  #←追加
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log

#

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[IIS]                          #←変更(モジュール名)
path = /cygdrive/d/Inetpub     #←変更(バックアップ対象)
read only = false
transfer logging = yes

★修正後上書き保存

  • サービス起動
    「スタート」→「管理ツール」→「サービス」
    「RsyncServer」を起動、プロパティでスタートアップの種類を「自動」に変更

転送先サーバ収集

転送先サーバからアクセス

  • ファイル収集
# rsync -av rsync://192.168.0.30/IIS /home/hogehoge/backup2

遭遇したトラブル

「error starting client-server protocol (code 5)」が発生

問題:
以下コマンドでエラーとなる

@ERROR: access denied to backup from hogehogeserver (192.168.0.10)
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=2.6.8]

原因:
転送元 rsyncd.conf の hosts allow = の設定値が転送先サーバになってない

「failed to connect to 192.168.0.10: Connection refused (111)」が発生

問題:

以下コマンドでエラーとなる

# rsync -avz root@192.168.0.10::backup backup
rsync: failed to connect to 192.168.0.10: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(107) [receiver=2.6.8]

原因:
転送元サーバにて「xinetd」漏れ

# /etc/rc.d/init.d/xinetd start

「chroot failed」が発生

問題:

以下コマンドでエラーとなる

# rsync -avz root@192.168.0.10::backup backup
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=2.6.8]

原因:
転送元サーバにて「rsync.conf」のpath 指定間違い

パス名が値がいっている。または、ディレクトリでなくファイルを指定している場合エラーが発生

cron実行後バックアップフォルダが作成されない

問題:
コマンド動作確認でbackupフォルダ作成出来ることを確認後、同じコマンドをcron登録したが、時間が過ぎてもbackupフォルダが作成されない

# crontab -l
15 02 * * *    /usr/bin/rsync -avz root@192.168.0.10::backup backup/

原因:
cron実行時は、rootユーザで動くため、root配下の/root/backup で作成される。

hogehogeユーザ配下に作成したい場合以下のとおりフルパスで指定

# crontab -l
15 02 * * *    /usr/bin/rsync -avz root@192.168.0.10::backup /home/hogehoge/backup/

cwRsyncServer稼動後、Windows→Linuxのファイル収集が出来ない

問題:
cwRsyncServerを稼動後、linuxサーバ側から以下コマンドを投入してもファイル収集が出来ない

# rsync -av rsync://192.168.0.30/IIS /home/hogehoge/backup2
@ERROR Invalid UID nobody

原因:
Windows側の「sync.conf」にgid,uidの設定がなかったため

uid = 0  #←追加
gid = 0  #←追加

謝辞

テキスト作成にあたり、以下サイトを参考にさせて頂きました。ありがとうございます。

http://shirata.ddo.jp/papa/blog/2007/09/rsync.html
http://www.matsuaz.com/matsumotojs/2009/11/27/1259252121490.html
http://halta.dip.jp/handmade/computer/rsync/rsync.html
http://tf0054.blogspot.com/2007/05/windows-rsyncwindows.html
http://www.maruko2.com/mw/rsync_%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E5%90%8C%E6%9C%9F%EF%BC%88%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%EF%BC%89
http://d.hatena.ne.jp/natsumesouxx/20100313/1268479064
http://www.itefix.no/i2/node/11817