Linux:rsyncでファイル同期


Pocket

まずrsyncコマンドの基本

rsync [option] [同期元ファイルパス] [同期先ファイルパス]

リモートサーバと同期するときはファイルパスの前に:で区切ってサーバ名またはIPアドレスを指定する

rsync [option] user@192.168.0.2:/tmp /tmp

※この例ではuserアカウントで192.168.0.2にアクセスしようとしているので、目的のサーバに接続した後、パスワードを聞かれる。
パスワードを答えると同期が行われる。

cron等で定期的に同期したい場合、このパスワード入力が面倒。
リモートのrsyncサーバにユーザを登録していれば–password-fileというオプションをつけてコマンドラインにパスワードを含めることができる。

rsyncサーバの設定

rsyncの設定ファイルを作成しする。
設定ファイルにはリモートでアクセスできる接続元や、ディレクトリ、ユーザの設定を書く。

/etc/rsync.conf
#
# Global options
#
uid = root
gid = root
use chroot = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.1/24
hosts deny = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png

#
# Module options
#
[remote1]
comment = rsync server
path = /tmp/remote1
auth users = remote_user1
secrets file = /etc/rsyncd.secrets
read only = no

[remote2]
comment = rsync server
path = /tmp/remote2
auth users = remote_user2
secrets file = /etc/rsyncd.secrets
read only = no

次にユーザのパスワードを設定する。
※ここで作成するユーザ(上記のrsync.confのremote_user1,remote_user2にあたる)はrsyncのユーザである。
Linuxに同じユーザを作成する必要は無い。

rsync.confで”secrets file”に指定したファイルを編集する。

/etc/rsync.secrets
remote_user1:password
remore_user2:password

※secrets fileのパーミッションは600にすること。それ以外のパーミッションでは認証できない。

以上でrsyncサーバの設定は終わり。サーバを起動するには

rsync –daemon –config=/etc/rsyncd.conf

rsyncユーザで接続

rsyncサーバに設定したユーザ、ディレクトリで同期できるかのテストは以下のようなコマンドで行う。

rsync -r /tmp/test remote_user1@192.168.0.2::remote1

パスワードを聞かれないようにするにはパスワードファイルを作成し、コマンドオプションでそのパスワードファイルを指定する。

rsync -r –password-file=/etc/rsync.passwd /tmp/test remote_user1@192.168.0.2::remote1

/etc/rsync.passwdにはパスワードを平文で書いてよい。但し、他のユーザにアクセスされない場所に置くこと。
またこのファイルもパーミッション600でなければ認証できないので注意

1 Comments

  • […] 、いろいろ調べてみたところ、リモート側でちゃんと設定を行う必要があるみたい。 こちらのサイトを参考にリモートのサーバに設定ファイル等を作成。 サイトの通り/etcディレクトリ […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です