質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Q&A

解決済

3回答

6344閲覧

rsyncによるリアルタイムのバックアップについて

ssall

総合スコア30

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

1グッド

1クリップ

投稿2016/10/26 08:14

編集2016/10/28 02:01

【概要】

システムの本番環境のバックアップが一部取れていないことが発覚し、元の設定も見直しつつ、とれていなかった分(画像データ)もとれるようにしようと試みております。

元の設定ではpostgresとldapのデータのバックアップを取っており、rsyncを用いています。
画像データのバックアップもrsyncを使おうと色々調査したのですが、元のrsyncの設定(というより使い方になるのでしょうか)がリアルタイムで稼働している理由・手法がわからず困っております。


【詳細】

ログや挙動を見る限り、本番機のpostgresとldapのデータに変更があると、その都度バックアップサーバにも変更が入っていました。

ネットで調べる限りrsyncを使ったこうしたリアルタイムのバックアップには、lsyncも併用することで実現できるという内容が多かったのですが、バックアップサーバにも本番機にもlsyncは入っていませんでした。

また、cronで細かいスケジュール刻みでコマンド実行しているのかとも思ったのですが、crontabにも何も記載はありませんでした。

rsyncにデーモンモードで起動できる機能があり、それによって変更がある度にバックアップされるのかと思い検証してみたのですが、コマンドを打たないとバックアップされませんでした。

そこで質問なのですが、

  • rsyncのリアルタイムの同期をする方法としてlsyncもcronも使わない方法はあるのでしょうか。
  • 変更の度に同期することはデーモンモードで実現できるものなのでしょうか。

何卒ご教示願います。


追記1
/var/log/rsyncd.logというファイルの内容の一部を掲載します。
これを見る限りリアルタイムに動作しているようにみえます。
logの取り始めは2013年からでした。また、IPアドレスは*にて伏せております。

2016/10/28 09:36:30 [9705] receiving file list 2016/10/28 09:36:32 [9705] sent 54 bytes received 4353804 bytes total size 16777216 2016/10/28 09:36:40 [9709] name lookup failed for *.*.*.*: Name or service not known 2016/10/28 09:36:40 [9709] connect from UNKNOWN (*.*.*.*) 2016/10/28 09:36:40 [9709] rsync to archives/ from unknown (*.*.*.*) 2016/10/28 09:36:40 [9709] receiving file list 2016/10/28 09:36:42 [9709] sent 54 bytes received 4058672 bytes total size 16777216 2016/10/28 09:36:50 [9714] name lookup failed for *.*.*.*: Name or service not known 2016/10/28 09:36:50 [9714] connect from UNKNOWN (*.*.*.*) 2016/10/28 09:36:50 [9714] rsync to archives/ from unknown (*.*.*.*) 2016/10/28 09:36:50 [9714] receiving file list 2016/10/28 09:36:51 [9714] sent 54 bytes received 2241907 bytes total size 16777216
hana-da👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2016/10/26 08:38

lsyncd がインストールされてないというのは、lsyncdのプロセスが存在しなかったということでしょうか? $ sudo ps -Af | grep lsync | grep -v grep
ssall

2016/10/28 00:22

体調不良によりご返信が遅れました。すみません。ps コマンドで確認してみましたが、lsyncに相当するプロセスは稼働しておりませんでした。また、yumでのインストールログも見てみましたが、インストールしたログは確認できませんでした。
退会済みユーザー

退会済みユーザー

2016/10/30 05:32

ログの抜粋範囲だと receiving file list が 10秒単位で出ていますが、常に 10秒単位ということは無いですか?
guest

回答3

0

本番機で定期的に rsync コマンドが実行されて、バックアップ機の rsyncd で受けている構成だと思います。
トリガーは本番機側なので、本番機で lsyncd や inotifywait が動いていないか、cron から rsync が実行されていないか確認ください(既に確認済みでしたらすみません)。
あるいは、postgresql, ldap のログを見て、特定の文字列が見つかったらコマンドを実行するようなプロセス(swatch, sec など)が動いているかもしれません。

別の調査方法として、audit で rsync コマンドが実行されたことを検知して、ログに記録する方法があります。
ログには親プロセスID(ppid)の情報も記録されるので、何かわかるかもしれません。

# service auditd start (または systemctl start auditd) # auditctl -w /usr/bin/rsync -p x # ausearch -x /usr/bin/rsync (または /var/log/audit/audit.log を直接見る)

投稿2016/10/28 09:54

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

私に思いつく手段としては、

  • inotify-toolsを使用している。
  • cron を使用しているが、設定ファイルは crontab ではなく /etc/cron.d/ に配置している。

といったところでしょうか。

どうしても分からないようであれば、ps コマンドなどを使い、該当サーバ上で動作している全てのプロセスを洗い出してみてはいかがでしょうか。

もしくは、シスログ(/var/log/**)に何らかのログが記録されているかも知れません。

投稿2016/10/26 08:59

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssall

2016/10/28 00:34

体調不良によりご返信が遅れました。すみません。 > inortify-toolsを使用している 有難うございます。こちらについては初めて聞いたツールですので少し調べてみます。 >/etc/cron.d/に配置している そちらも調べては見たのですが、ファイルはあるのですが全てコメントアウトされており、かつrsyncd.confに記載されている内容に合致しそうな内容もありませんでした。 >/var/log/**に何らかのログが記録されているかもしれません。 実はバックアップ先の/var/log/配下にrsyncd.logというファイルが出力されており、何のファイルをいつバックアップをとったよ、という内容のログが本番機に変更がある度に追記され続けています。そこから、とりあえずリアルタイムで同期はしていると判断しました。
ssall

2016/10/28 04:52

inorify-toolsについてプロセス、logなど確認しましたが、インストールはされていませんでした。 申し訳ありませんが、何かほかに思い当たるようなツールなどございますか。
KiyoshiMotoki

2016/10/28 06:39

返信ありがとうございます。 他に私に思いつく方法としては、  while true; do   rsync ...   sleep 1  done のようなシェルをバックグラウンドで動かすことくらいですね。。 (本番環境にあるまじきローテクですがw) psコマンドなどで、プロセスの洗い出しはしてみましたでしょうか? また、ファイル同期が走るのとほぼ同じタイミングでログが書き込まれるログファイルがあれば、それもヒントになるかと思います。 (個人的には可能性は低いと思いますが)別のサーバからファイルを監視している、ということも考えられます。 その場合、/var/log/secure などから、該当サーバにアクセスしているホストが確認できるかも知れません。 それでも分からないようであれば、申し訳ありませんがこれ以上、私に思いつくことはありません。
KiyoshiMotoki

2016/10/29 15:35 編集

Y.H.様 コメントありがとうございます。 仰る通り、 「プログラムを自作する」 という手もありましたね。
ssall

2016/11/01 01:46

KiyoshiMotoki様、Y.H.様 少し時間が空いてしまいまして申し訳ありません。 Y.H.様のコメント通りで、自作のプログラムがありそれがデータ元サーバの対象フォルダに変更がある度に処理を行っていました。このような方法があるのですね。 この仕様だと処理が重くなるような気しかしないのですが、とにかく原因が判明しました。 長い間、質問を引っ張ってしまいましたが解決することができました。 大変助かりました。有難うございます。 コメント頂いた方には本当に感謝してはおりますが、解決のきっかけとなったのでこちらの回答をベストアンサーとさせて頂きます。 ありがとうございました。
Y.H.

2016/11/02 12:24

ssallさん。無事解決できてよかったです!
guest

0

rsyncの同期設定の詳細は、下記URL
http://qiita.com/mitzi2funk/items/9308db56829d7b4cb90d

結論としては、rsyncをサーバ起動してもリアルタイム同期はできないようです。
リアルタイムで同期する場合は、lsyncdが必要。

投稿2016/10/26 09:06

nagaetty

総合スコア1106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssall

2016/10/28 00:26

体調不良によりご返信が遅れました。すみません。 やはりlsyncdが必要なのですか、、、 しかし、# ps -ax で全プロセスを確認したのですがlsyncdのプロセスは稼働していないようです。 デーモンモードについては自動同期とは何も関連はないのでしょうか。
nagaetty

2016/10/28 01:04

更新のチェックと転送はクラアントの機能になるので、サーバは受信する機能として働くようです。
ssall

2016/10/28 01:19

つまりデーモンモードでrsyncを動作させてもrsyncサーバ(バックアップサーバ)は受信してくれるだけで、自発的にはデータ元を確認して取りに行ってくれるわけではないということですね。 そうするとデーモンは関係ないのですね。有難うございます。自分だけでは理解しきれずはっきりとそう断言できかねていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問