ファイルバックアップ rsync
サーバ障害に備え複数サーバ間でデータ転送を行いバックアップサーバを構築する。
rsync は、UNIXシステムにおいて、差分符号化を使ってデータ転送量を最小化し、遠隔地間のファイルやディレクトリの同期を行うアプリケーションソフトウェアである。
複数サーバ間でファイル同期を行うことにより、サーバ障害時に動作するバックアップサーバ構築に利用されることが多い。
目的
マスターサーバからスレーブサーバにファイルを転送し、マスターサーバ障害に備える。
コピー元(マスターサーバ)でrsyncを動作させ、コピー先(スレーブサーバ)にファイルを送信する。
構築条件
構築機器
- 仮想サーバ CentOS KVM で構築
作成環境
OS | CentOS 5.5 64bit版 |
サーバ作成条件
転送元サーバ | サーバIP | 192.168.0.10/24 |
ホスト名 | masterServer | |
user | hogehoge | |
userpasswd | hogehogepass | |
バックアップ元 | /var | |
転送先サーバ | サーバIP | 192.168.0.20/24 |
ホスト名 | slaveServer | |
user | fugafuga | |
userpasswd | fugafugapass | |
バックアップ先 | /home/fugafuga/backup |
手順記入ルール
- コマンド行頭記号で 「$」はユーザ権限 「#」はスーパーユーザー権限 を表示
- コマンドが長くなる場合は、行末に「\」を記述し複数行に記述。
ファイル入手
サイト
- Welcome to the rsync web pages
http://rsync.samba.org/
今回インストールしたファイル
★CentOSに収録されているアプリを使用
rsync.x86_64 2.6.8-3.1 intra-repo
前準備
- CentOSインストール 実施
- 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」を入手
http://itefix.no/i2/cwrsync
http://sourceforge.net/projects/sereds/files/cwRsync/4.0.6/cwRsyncServer_4.0.6_Installer.zip/download
- ファイルを解凍
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