LoginSignup
144
151

More than 5 years have passed since last update.

同期設定(rsync)を今一度整理してみました

Last updated at Posted at 2014-09-08

はじめに

■rsyncコマンドとは
サーバ間でファイル、ディレトリを同期させることが出来るコマンド

■コマンド書式

# rsync [option] SOURCE1 [SOURCE2]... DEST

※SOURCE は 複数選択可能
※SOURCE で指定するディレクトリ名の最後にスラッシュを付けた場合、ディレクトリ内をコピーする。スラッシュを付けない場合は、ディレクトリごとコピーする。
※DEST で指定したディレクトリが存在しない場合は、自動的に作成される。
 
■今回の目的
rsync を デーモンモードで動作させ、rsyncサーバとして利用する

rsync を デーモンモードで動作させ、rsyncサーバとして利用する

■参考サイト様
rsync でディレクトリの同期(バックアップ)

rsyncによるファイル/ディレクトリの同期 - Server World
 

環境

■構成(AWS EC2)

用途 ホスト名 Private IP
rsyncサーバ Mitzi-veri 10.0.1.108
rsyncクライアント Mitzi-dev 10.0.2.138

 
■ミドルウェア

  • CentOS 6.5
  • rsync 3.0.6
  • xinetd 2.3.14  

①rsyncサーバ側(同期元) の 設定

■セキュリティグループ
 互いが所属するネットワークアドレス に対して、rsyncデーモンモードのデフォルトLISTENポート873番を開放する。
今回だと、 10.0.0.0/16 TCP 873 を開放する

■ xinetdとrsyncを導入

# yum install xinetd rsync

 
■設定
▽xinetd経由でrsyncを起動する設定

# vi /etc/xinetd.d/rsync
--------------------
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no ←変更
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

 
▽rsyncの設定ファイルを新規作成

# vi /etc/rsyncd.conf
--------------------
#--------------
# Global options
#--------------
uid           = root
gid           = root
log file      = /var/log/rsyncd.log
pid file      = /var/run/rsyncd.pid
hosts allow   = 10.0.0.0/16
hosts deny    = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png


#--------------
# Module options
#--------------
[tmp]
        comment      = rsync server
        path         = /tmp/mitzi
        use chroot    = true
        auth users   = rsync_user1, rsync_user2
        secrets file = /etc/rsyncd.secrets
        read only    = false
        exclude      = *.mp
        include      = *.mp30

 
■各モジュールオプションの説明:

オプション 説明
uid/gid rsyncをデーモンモードで起動する時の UID/GIDを指定
log file/pid file rsyncデーモンの動作ログと、PID ファイルを指定
hosts allow 接続を許可するクライアントのホスト名とIPアドレスのパターンを指定。スペース区切りで複数指定
hosts deny 接続を拒否するリスト。 ※"hosts allow"、"hosts deny"どちらにもマッチしなかった場合、その接続元は接続許可
dont compress 転送の際に圧縮したくないファイル名を指定 (既に圧縮されたファイルを指定するのが有効)
[] 上記だと[tmp]の箇所をモジュールといい、rsync プロトコルのマウントポイントのようなもの。複数設定可能
path モジュールのルートにするパス(マウントポイント)を指定(コピー先)
use chroot デフォルト"true"。その場合、ファイル転送する前に "path" で chroot
read only クライアントがファイルをアップロードできるかどうかを設定。"true"ならばアップロード出来ない
auth users、secrets file ユーザ認証する場合,slave側に設定する(ユーザ名とパスワード設定ファイルを指定する)
exclude 除外リストを指定
include 除外すべきでないリストを指定

 
■ユーザ認証をする場合
▽上記で設定した認証リストファイルを作成する

# vi /etc/rsyncd.secrets
--------------------
rsync_user1:password
rsync_user2:password
# chmod 600 /etc/rsyncd.secrets

※01. /etc/rsyncd.secrets ファイルの所有者は rsync デーモンを実行するユーザーに設定し(rsyncd.conf の uid)さらに、ファイルのパーミッションを 600にする必要がある。
そのように設定していないと、rsyncコマンド実行時に以下エラーが発生する。

@ERROR: auth failed on module tmp
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

※02. passwordに設定には文字数制限があるようです。 【2016/03/29 追記】

・公式ドキュメント(日本語版)より
http://www.infoscience.co.jp/technical/rsync/rsyncd_conf.html

パスワードには様々な文字が 入りますが、多くの OS ではクライアントが入力するパスワード長を制限しています。おそらく 8 文字以上 では認証できません。

■xinetd自動起動設定、スタート

# chkconfig xinetd on
# service xinetd start

※この状態で、"xinetd"を起動すると、"rsync"がデーモンモードで利用できるようになります。

②rsyncクライアント側(同期先) の 設定

■rsyncのインストール

# yum install rsync 

 
■ユーザ認証をする場合
▽rsyncサーバに認証接続するときのパスワードファイルを設定

# vi /etc/rsync.passwd 
--------------------
password

※パスワードのみ記述する

# chmod 600 /etc/rsync.passwd

※/etc/rsync.passwd ファイルの所有者は rsync を実行するユーザーに設定しさらに、ファイルのパーミッションを 600にする必要がある。
そのように設定していないと、rsyncコマンド実行時に上述したものと同様のエラーが発生する。

③動作確認

▽rsyncクライアントより下記コマンド実行

# rsync -avz --password-file=/etc/rsync.passwd rsync://rsync_user1@10.0.1.108/tmp /var/www/test

※rsyncサービスを起動しておく必要はない

▽結果

[root@Mitzi-dev www]# pwd
/var/www

[root@Mitzi-dev www]# ll
合計 16
drwxr-xr-x 2 root root 4096  7月 23 23:18 2014 cgi-bin
drwxr-xr-x 3 root root 4096  9月  4 15:42 2014 error
drwxr-xr-x 2 root root 4096  7月 23 23:18 2014 html
drwxr-xr-x 3 root root 4096  9月  4 15:43 2014 icons

[root@Mitzi-dev www]# rsync -avz --password-file=/etc/rsync.passwd rsync://rsync_user1@10.0.1.108/tmp /var/www/test
receiving incremental file list
created directory /var/www/test
./
rsync-test.html

sent 82 bytes  received 173 bytes  510.00 bytes/sec
total size is 12  speedup is 0.05

[root@Mitzi-dev www]# ls -l /var/www/test/
合計 4
-rw-r--r-- 1 root root 12  9月  8 17:32 2014 rsync-test.html
(testディレクトリと配下のファイルがコピーされた)

④定期的に同期するよう設定

例としてrootアカウントのcrontabに設定してみます。

# crontab -e
-------------
*/5 * * * * /usr/bin/rsync -avz --password-file=/etc/rsync.passwd rsync://rsync_user1@10.0.1.108/tmp /var/www/test

※5分毎に同期する設定
※同期元にないファイルを削除したい場合は、「--delete」オプションを付与
※--exclude-from=/etc/rsync_exclude.lst のように設定し、除外リストを作成することも可能

まとめ

これでサーバ間の同期処理が出来るようになりました。
次回はlsyncdを利用したリアルタイム同期を整理してみたいと思います。
 

以上になります。

144
151
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
144
151