rsyncについて質問です。


たとえばAサーバからBサーバへrsyncを利用して、5分毎(cronで)にバックアップするとします。
あるとき、Aサーバで更新されたファイルが著しく多く、5分で処理が完了しなかった場合はどうなるのでしょうか?

5分後に再度rsyncコマンドが実行されますが、すでにプロセスが立ち上がってるため起動しない?
もしくは2重に起動して何か不具合が発生する?

説明があるページか、経験談を聞かせてください。

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2007/07/23 01:19:44
  • 終了:2007/07/25 00:09:23

回答(2件)

id:toohigh No.1

toohigh回答回数291ベストアンサー獲得回数372007/07/23 07:40:48

ポイント100pt

cron に単純に rsync が登録されている場合、実行中の rsync プロセスの有無に関わらず rsync が実行されるので、二重起動の状態が発生します。

不具合については、理論上は発生するはずだけど、私自身の経験した範囲内ではそれほど致命的なものは出ていない、というところです。(本当に危険そうな状況では対応策をとっているから、という面が大きいでしょうけど・・)

もちろん、二重起動になる危険性があるような場合は、ps コマンドで実行中の rsync プロセスを探すなり、ロックファイルを使うなどの排他制御を行うなり、なんらかの細工を行うべき、ですね。

http://lists.samba.org/archive/rsync/2002-June/002945.html

id:jumpe

ありがとうございます。

なるほど、安全のためにプロセスみて判定させたほうがよさそうですね。

もし2重起動したとして、どんな不具合が起きるか引き続きお願いします。

2007/07/24 10:58:36
id:toohigh No.2

toohigh回答回数291ベストアンサー獲得回数372007/07/24 16:09:53

ポイント100pt

起こりうる不具合ですが、時刻Xとそれ以降の時刻Y に起動した rsync が同時に処理を行った場合のパターンをいくつか挙げてみます。

  • X〜Yの間にA上で削除したファイルがBに残る(rsync-X による同期処理がrsync-Y による処理より後に行われた場合)
  • X〜Yの間にA上で作成したファイルがBに残らない(rsync-X による同期処理がrsync-Y による処理より後に行われた場合)
  • X〜Yの間にA上で更新したファイルがBに不完全な内容で残る(二つのrsyncによるB上でのファイル作成が同時に行われた場合)
  • X以前の時点でA上で更新したファイルがBに不完全な内容で残る(二つのrsyncによるB上でのファイル作成が同時に行われた場合)

整理すると、

  • 問題が発生するのは B 側だけ。A 側にまで影響が出ることはまずあり得ない
  • 前回の rsync 完了以降、二重起動された二つの rsync からみてともに変更されていないファイルについては、問題は発生しない
  • 前回の rsync 完了以降に更新されたファイルについては、B側のファイルが消えたり内容の一部がかけたりするような不具合が発生する可能性がある
  • 問題が発生した場合でも、その次に(二重起動することなく) rsync が完了できればその時点で不具合解消されているはず。

・・というところでしょうか。rsync の動作からの推測であり、いずれも体験したことはないのですが・・。

id:jumpe

いろいろありがとうございます。

とりあえずシェルスクリプトでrsyncのプロセス有無をチェックして実行するものを作成し、cronで実行することにしました。

あまり回答も集まりませんし、ここらへんで終了することにします。

2007/07/25 00:07:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません