mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Debian 7 Wheezy - Rsync でディレクトリ同期(xined 使用)!

[ サーバ構築 ] [ Debian, Linux, rsync ]

こんばんは。

Debian GNU/Linux 7.1.0 サーバに Rsync を導入して、クライアント側のディレクトリと同期させる方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。

0. 前提条件

  • Debian GNU/Linux 7.1.0 での作業を想定。
  • ローカルマシン(Linux Mint 14)からサーバマシン(Debian GNU/Linux 7.1.0 Wheezy)へ同期することを想定。
  • サーバ側のバックアップ用ディレクトリは “/home/bak” とする。
  • 同期元(クライアントマシン)の IP アドレスは 192.168.11.11 を想定。
  • 同期先(サーバマシン)の IP アドレスは 192.168.11.2 を想定。
  • 記事後半で xined を使用する方法を記述。
  • 以下の記事内では、サーバ側の設定とクライアント側の設定を記述しているので混同しないこと。

1. 【サーバ側】Rsync インストール

同期先のサーバマシン(Debian)へ Rsync をインストールする。

1
# aptitude -y install rsync

2. 【サーバ側】同期先ディレクトリ作成

同期先のサーバマシン(Debian)にディレクトリを作成する。

1
# mkdir /home/bak

3. 【サーバ側】Rsync デフォルト設定ファイル編集

同期先のサーバマシン(Debian)で、 Rsync のデフォルト設定ファイル “/etc/default/rsync” を以下のようにする。

/etc/default/rsync
1
RSYNC_ENABLE=true  # <= Rsync 有効化

4. 【サーバ側】Rsync 設定ファイル作成

同期先のサーバマシン(Debian)で、 Rsync の設定ファイル “/etc/rsyncd.conf” を以下のように作成する。

/etc/rsyncd.conf
1
2
3
4
5
6
7
8
[backup]                     # <= rsync 実行時に使用する名前
path        = /home/bak      # <= 同期先ディレクトリ
hosts allow = 192.168.11.11  # <= 同期を許可するホスト(同期元ホストを指定)
hosts deny  = *
list        = true
uid         = root
gid         = root
read only   = false

5. 【サーバ側】ポート開放

当然、ファイアウォールの設定を行なっている場合はポート(TCP:873)の開放を行う必要がある。

iptables なら、 “/etc/iptables/rules.v4” に以下を追加する。

/etc/iptables/rules.v4
1
2
# TCP873番ポート(Rsync)へのアクセスを許可
-A INPUT -p tcp --dport 873 -j ACCEPT

そして、iptables を再起動する。

1
# /etc/init.d/iptables-persistent restart

6. 【サーバ側】Rsync 起動

Rsync を起動する。

1
2
# /etc/init.d/rsync start
Starting rsync daemon: rsync.

7. 【クライアント側】Rsync インストール

同期元のサーバマシン(Linux Mint)に rsync をインストールする。

1
# aptitude -y install rsync

8. 【クライアント側】同期除外ファイル指定

同期元の対象ディレクトリ内から同期を除外するファイル/ディレクトリのリスト(ファイル名は任意)を作成する。 除外するファイル/ディレクトリがなければこの作業は不要。(ファイル名は “/etc/rsync_exclude.lst” を想定)

/etc/rsync_exclude.lst
1
2
hoge.txt
fuga.txt

9. 【クライアント側】同期の実行

以上の設定完了後、同期元のクライアントマシン(Linux Mint)で以下のようにして同期を行う。

1
# rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /home/bak 192.168.11.2::backup

-a はアーカイブモード、-v は転送の詳細情報を表示、-z は圧縮転送するオプション。 --delete は同期元から削除されたら同期先も削除するオプション。除外するファイル/ディレクトリが無いのなら、--exclude-from=/etc/rsync_exclude.lst のオプションは不要。

10. 【サーバ側】xinetd インストール

常に rsync を起動してサーバからの同期要求を待機するのではなく、同期の要求があった場合のみ rsync を起動させる方法を採る。そのために、同期先のサーバマシン(Debian)に xinetd をインストールする。

1
# aptitude -y install xinetd

11. 【サーバ側】xinetd 設定ファイル作成

同期先のサーバマシン(Debian)で xinetd の設定ファイル “/etc/xinetd.d/rsync” を作成する。

/etc/xinetd.d/rsync
1
2
3
4
5
6
7
8
9
10
11
service rsync
{
        disable         = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

12. 【サーバ側】xinetd 自動起動設定

同期先のサーバマシン(Debian)の xinetd をマシン起動時に自動起動するように設定する。(sysv-rc-conf 導入済みの場合)

1
2
3
# sysv-rc-conf xinetd on
# sysv-rc-conf --list | grep xinetd
xinetd       0:off      1:off   2:on    3:on    4:on    5:on    6:off

もしくは、以下のようにする。

1
# insserv -d xinetd

逆に、自動起動しないようにするには以下のようにする。(sysv-rc-conf 導入済みの場合)

1
2
3
# sysv-rc-conf xinetd off
# sysv-rc-conf --list | grep xinetd
xinetd       0:off      1:off   2:off   3:off   4:off   5:off   6:off

あるいは、

1
# insserv -r xinetd

13. 【クライアント側】同期実行(xinetd 使用)

以上の設定完了後、同期元のクライアントマシン(Linux Mint)で以下のようにして同期を行う。
但し、今回は xinetd を使用するので、rsync は停止しておく。
クライアント側からの同期実行時にサーバ側の rsync が自動で起動し同期が実行されるはずである。

1
# rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /home/bak 192.168.11.2::backup

以上。

Comments