rsync + ssh でファイルの同期をとる(2) マスターサーバー(コピー元サーバー)でないサーバーへファイルをアップロードした時のリカバリの仕方
以前のrsync + ssh でファイルの同期をとるでサーバー間でのファイルの同期について話をしました。
rsyncを使うと1回のFTPアップロードで、複数のサーバー一気にコピーしてくれます。
非常に便利なんですが、間違ってマスターサーバー(コピー元サーバー)でないサーバーへファイルをアップロードした場合、
先の記事で紹介した設定では、その後、うまく全サーバーでアップロードできないことがあります。
そのとき、やるべきことは、
全ファイルの上書きによる rsync を実行 することだけなんですが、
個人的に、備忘録として残しておきます。
rsyncを使って上書きする
rsyncの使い方として、以前のrsync + ssh でファイルの同期をとるでは、以下のような例で説明していました。
コピー元サーバーは、自サーバー、
コピー先サーバーは、IPアドレス: 111.122.133.144 としています。
$ rsync -auz --delete -e ssh /var/www/html/ ruser@111.122.133.144:/var/www/html/
|
上書きしたい場合は、パラメータを
-auz → -az へ変更すればOKです。
$ rsync -az --delete -e ssh /var/www/html/ ruser@111.122.133.144:/var/www/html/
|
パラメータ
u は、
の意味になります。
つまり、更新日時で判断していますから、もしもマスターサーバー(コピー元サーバー)でないサーバーへ間違ってアップロードしてしまうと、
マスターサーバー(コピー元サーバー)側の該ファイルの更新日時が、そのアップロードした日時を過ぎない限り更新されないわけです。
そのため、間違ってアップロードしてしまった場合は、全上書きをさせて、一旦、全ファイルの同期をとってしまうことが肝要だと思います。
本対処の仕方
先のrsyncを使って上書きして、まずは、リカバリができました。
このような誤りが、今後も起きないとは限りませんね。
そのときのための本対処を入れておきましょう。
本対処は、1日1回、全上書きで同期をとるようにcronに設定することです。
$ crontab -e
*/5 * * * * rsync -auz --delete -e ssh /var/www/html/ ruser@111.122.133.144:/var/www/html/ > /var/log/rsync 2>&1
0 0 * * * rsync -az --delete -e ssh /var/www/html/ ruser@111.122.133.144:/var/www/html/ > /var/log/rsync_daily 2>&1
|
上段は、今までの更新を5分間隔で同期をとるようにしています。
下段は、全上書きでの更新を毎日0時0分に同期をとるようにしています。
とりあえず、これで、もし間違ってアップロードしたものは、最長でも1日の内に修復されることになります。
5分間隔では、上書きなしの更新ですから、無駄に負荷をかけずにリカバリをするようにしました。
システムによっては、5分間隔を、全上書きの方が良い場合もあるかもしれません。(たぶん、こっちが正しいやり方だと思います。個人的に、どうしても一時的にアップロードしないといけないことがあるので、このような対処にしています。これがだめなんですよね。)
この更新がうまくいっていないことに気づくまで、えらく時間がかかってしまいました。
結構、この種の問題は、気づかないと後々大きな問題でサブマリンのように浮かび上がってきますから要注意です。
個人的には、ただただ不用意にマスターでないサーバーへアップロードしていたことに尽きるのですが・・・。
いずれにせよ、みなさんもお気をつけください。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :