rsyncとcronでファイルの自動同期を行う


スクリーンショット 2015-10-18 13.56.52


rsyncコマンドとcronを使ってファイルの自動同期をおこなう場合は以下の手順を踏めばOK。
イメージとしてはこのようなカンジ。
スクリーンショット 2015-10-18 12.55.51

接続はSSH

サーバAとサーバBはSSHで接続するので、サーバAからサーバBへSSHログインする際には公開鍵認証によるパスワード無し認証を設定します。そうしないとパスワードを聞かれてしまいSSH接続が失敗してrsync自体がタイムアウトして終了してしまいます。

公開鍵認証の設定方法

※ここではSSHユーザはhogeとします。

①サーバA/home/hoge/.sshにて、秘密鍵[rsync-rsa]と公開鍵[rsync-rsa.pub]のペアを作成する

※パスフレーズ無しの鍵を作成します。

②サーバA側のSSHに関連するディレクトリおよびファイルのパーミッションを適切に設定する

/home/hogeディレクトリのパーミッションをrwx——にしておく。

 

/home/hoge/.sshディレクトリのパーミッションをrwx——にしておく。

 

/home/hoge/.ssh/rsync-rsaのパーミッションをrw——-にしておく。

 

③サーバA側で作成した公開鍵をサーバB側に登録する
サーバA側で作成した/home/hoge/.ssh/rsync-rsa.pubをサーバBの/home/hoge/.sshディレクトリへコピーする。(コピーはscpコマンド、WinScp等、なんでも良い)

サーバB側の/home/hoge/.ssh/authorized_keysにrsync-rsa.pubの内容を追加する。

※rsync-rsa.pubに書かれている内容をauthorized_keysに追記すれば良いので、Windows側に必要なファイルを持ってきて、直接ファイルを開いて内容をコピー&ペーストして、サーバへ戻す方法でも良い。

 

④サーバB側のSSHに関連するディレクトリおよびファイルのパーミッションを適切に設定する
/home/hogeディレクトリのパーミッションをrwx——にしておく。

 

/home/hoge/.sshディレクトリのパーミッションをrwx——にしておく。

 

/home/hoge/.ssh/authorized_keysのパーミッションをrw——-にしておく。

 

⑤サーバAからサーバBへSSH接続して、鍵による認証が行われているか確認する

サーバA上にてSSH接続コマンドを実行する。

コマンドプロンプトが表示されればOK。
※この時点でパスワードの入力を促されたら、鍵による認証が失敗しているということになるので、パーミッションの設定等を再度見直す。

 

SSH切断はexitでできます。

 

⑥サーバA側にcronによるrsyncコマンドの自動起動の設定を行う
crontabの編集コマンドを実行する。

※crontab -lだと現在設定されている内容をリスト表示する(編集はできない)
※crontab -rは全ての設定を消去してしまうため要注意。(eとrのキーは隣同士なので打ち間違えのないように)

上記コマンド実行後はviによるcrontabの編集が可能になるのでrsyncの設定を記述。

※サーバBの/home/hoge/data/以下のファイル全てをサーバAの/home/hoge/data/以下にコピーしている。
※–bwlimit=400 オプションは帯域を多く使いすぎてサーバ負荷を高くしないように帯域制限している。

 

うまく動かない原因は結構単純ミスが多いです

以上で設定は終了です。cronにrsyncの設定を書いたは良いけれどうまく動かないケースは結構見受けられますが、大体がパスワードなしSSH接続が失敗しているのが原因のようです。また公開鍵認証を設定したけれどうまくいかない場合はSSH関連のディレクトリやファイルのパーミッションが正しく設定されていないケースをあるようですので、うまくいかない場合は両サーバのパーミッションを今一度見なおしてみてください。


シェアして頂けると嬉しいです

















チャーム本店



価格.com ブロードバンド

価格.com 自動車保険









■コメントはお気軽にどうぞ