東京都練馬区。Wordpressはおまかせ。印刷・ホームページなど販売促進のためのデザインを提案します。

デザイン事務所ダウンアンダー

営業
10:00-
19:00

rsyncによるサーバ同期

     2012/01/10   技術ノート   , ,  野村貞次

ポリシー

  • レンタルサーバのデータをローカルのLinuxマシンにバックアップしたい。
  • 完全同期(サーバから削除したファイルはローカルからも削除)とする。
  • cronで自動実行する。

サーバ要件

rsyncが動作する。
sshまたはtelnetでログインできる。

ローカルマシン要件

rsyncが動作する。
sshが使える。

rsyncの基本的な使い方

  • rsync -auv –delete [サーバ側のデータ] [ローカルのデータ]

-auvオプションで[サーバ側のデータ]で指定したディレクトリ以下と[ローカルのデータ]で指定したディレクトリ以下を再帰的に同期させます。 この時、比較は[サーバ側のデータ]で更新された(日付が新しい)ものがあれば[ローカルのデータ]にコピーします。

–deleteオプションは[サーバ側のデータ]で削除されたものがある場合、[ローカルのデータ]からも削除します。 [ローカルのデータ]に中間ファイル等を保存しておきたい場合は、–deleteオプションを指定しないでください。

例として以下のようにローカルのLinuxマシンで入力します。

  • rsync -auv –delete AAA@hogehoge.com:/home/aaa/public_html/ /home/bkup

hogehoge.comにAAAというユーザでログインして、/home/aaa/public_html(ホームページ公開ディレクトリ)以下のデータを、ローカルマシンの/home/bkupにダウンロードしてきます。 /home/bkupは、コマンド実行前に存在しなければなりません。

この際にパスワードを聞かれます。

cronで実行する

cronで実行するためには、パスワード入力を省略しなければなりません。

ローカルマシンにて

  • # ssh-keygen -b 1024 -t dsa
  • Generating public/private dsa key pair.
  • Enter file in which to save the key (/home/root/.ssh/id_dsa):【入力せずにリターン】
  • Enter passphrase (empty for no passphrase):【入力せずにリターン】

※パスフレーズを入力すると、パスワードのかわりにパスフレーズ入力を求められるので、空にすること。

/home/root/.ssh/id_dsa.pub(dsa公開鍵)をサーバの/home/aaa/.ssh/(~/.ssh/)にコピーします。
※ディレクトリはサーバの設定によって違います。

サーバのユーザ(aaa)のパスワード登録ファイルを作成します。

  • # cd # vi server.passwd
  • —————————————-
  • aaa:password
  • —————————————-

※aaaはサーバでのユーザ名、passwordはそのパスワードです。

  • # chmod 600 server.passwd

/root/server.passwdがパーミッション600でできあがります。
rootでなければならないわけではありません。

サーバにて

  • $ cd ~/.ssh/
  • $ cat id_dsa.pub >> authorized_keys
  • $ chmod 700 ~/.ssh
  • $ chmod 600 authorized_keys

コマンド

  • /usr/bin/rsync -auv –delete –password-file=/root/server.passwd -e /usr/bin/ssh aaa@hogehoge.com:/home/aaa/public_html/ /home/bkup

解説

  • コマンドはcronで使用することを考慮してフルパスで書いています。環境に合わせて書き換えてください。
  • —-delete –password-fileの頭は「ハイフン2こ」です。
  • aaa@hogehoge.comは自分のユーザ名、サーバ名に書き換えてください。
  • /home/aaa/public_html/ /home/bkupは自分の環境に合わせて書き換えてください。

実行すると、最初だけkeyを受け入れるかどうか聞いてきますので「y」と答えてください。

cronで実行する

  • # vi server2local.sh
  • ———————————–
  • /usr/bin/rsync -auv –delete –password-file=/root/server.passwd -e /usr/bin/ssh aaa@hogehoge.com:/home/aaa/public_html/ /home/bkup
  • ———————————–

server2local.shをcronに登録します。

うまく動かない場合

最低限のコマンドに絞って順番に原因を探りましょう。
できればテスト用ディレクトリを作ってテストした方が安全です。

     2012/01/10   技術ノート   , ,  野村貞次

Message

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

 こちらの記事も読んで見ましょう

rsyncによるサーバ同期 東京都練馬区。Wordpressはおまかせ。印刷・ホームページなど販売促進のためのデザインを提案します。

Copyright©デザイン事務所ダウンアンダー,2011 All Rights Reserved.

ページ先頭へ