Tips記事
» 2002年07月24日 00時00分 UPDATE

ミラーリングがしたい〜mirror編〜

[木田佳克,ITmedia]

 「ミラーリングがしたい〜wget編〜」Tipsでは、ツール「wget」を利用して手軽にミラーリングを行う方法を紹介した。

 ここでは、ツール「mirror」を使用してミラーリングを行う方法を解説しよう。ミラーリングとは、単なるファイルコピー(cp)とは異なり、ファイルスタンプを判別して最新ファイルのみをダウンロード、またはアップロードを行うことができる仕組み(ツール)だ。

 ここで紹介するツール「mirror」はPerlスクリプトで記述されており、利用するにはあらかじめPerlが動作する環境が必要だ。コマンドラインで「$ which perl」などと入力すれば、インストール済みかが判断できる。

・mirror入手先
ftp://sunsite.sut.ac.jp/pub/archives/packages/mirror/

# mkdir /usr/local/mirror
# cd /usr/local/mirror
# tar zxf mirror-2.9.tar.gz

# pwd
/usr/local/mirror/
# ln -s mirror.pl mirror

 インストール時に注意する点は、mirror-x.x.tar.gzがディレクトリを作成せずにカレントディレクトリに解凍されることだ。あらかじめ、上記のように「/usr/local/mirror」などとディレクトリを作成しておくのがよい。また、ここでの例では、便宜上「mirror.pl」ファイルを「mirror」としてシンボリックリンクさせておいた(ここでは「/usr/local/」ディレクトリ下に作成するため、すべてrootで行っている)。

 次は、ミラー元サイトにログインするための設定を記述する手順だ。

 アーカイブを展開した/usr/local/mirror/ディレクトリには、「mirror.defaults」ファイルが見られる。このファイルには設定例が記述されているが、次の例を参考にして新たに設定ファイルを作成した方がよいかもしれない。

 なお、設定ファイル内にはパスワードを記述する必要があるため、次のようにファイルオーナー以外が読みとれないようパーミッション変更をしよう。

# chmod 600 mirror.defaults

# vi /usr/local/mirror/mirror.defaults

# パッケージ名
package=default

# ミラーログイン先
site=xxx01.zdnet.co.jp

# ミラーを行うローカルとログイン先の各ディレクトリ
local_dir=/pub/www/help
remote_dir=/help

# ユーザー名とパスワード
remote_user=xxxx
remote_password=xxxx

# 実行ログ通知を行う場合の配送先
mail_to=helpdesk@zdnet.co.jp

# ダウンロードモードは「true」、アップロードは「false」
get_file=true

# パーミッションの設定
dir_mode=0755
file_mode=0644

# ローカル側でファイルを消したらサーバでも削除する
do_deletes=true

# グループ設定
group=help

 なお、次のように設定ファイル内に「package=」以下の行を複数用意すれば、「mirror -p [package名]」(mirror -p enterprise)と指定することで実行可能になる。

....中略....

package=enterprise
site=xxxx.zdnet.co.jp
local_dir=/pub/www/enterprise
remote_user=hoge
remote_password=hogege
mail_to=help-update@zdnet.co.jp
remote_dir=/enterprise
get_file=true
dir_mode=0755
file_mode=0644
group=help

package=developer
site=xxxx.zdnet.co.jp
local_dir=/pub/www/developer
remote_user=hoge
remote_password=hogehoge
mail_to=help-update@zdnet.co.jp
remote_dir=/developer
get_file=true
dir_mode=0755
file_mode=0644
group=help

...以下略...

 上記設定内容にてパッケージ名「enterprise」で「mirror -p enterprise」として実行させた場合、「xxxx.zdnet.co.jp」宛にユーザー「hoge」、パスワード「hogege」でログインし、リモート先「/enterprise」ディレクトリ下を、ローカルの「/pub/www/enterprise」にダウンロード(get_file=true)することを意味する。その際、ディレクトリ作成パーミッションは「755」、ファイル作成パーミッションは「644」、グループは「help」となる。

表■mirrorコマンドオプション

-d デバッグ表示を有効にする
-n ファイル比較のみを行う(実際のミラーは行わない)
-F ファイルの情報を管理するためにDBMを使う
-gsite:pathname 取得するファイルが指定できる。パス名の終端記述が「/」の場合にはディレクトリと見なされるが、ディレクトリであるにも関わらず「/」が書かれていない場合には、リスト判別のためパフォーマンスが下がる
-r 再帰的なディレクトリリスト取得を行わない
-v バージョン表示
-m ファイルの属性もコピーする
-t ファイル転送にftpのテキストモードを使う。指定しない場合にはバイナリモードになる
-f 変更がなくても強制ファイルコピーを行う
-uxxx xxxのユーザ名でftpサーバにログインする(指定しない場合にはanonymousユーザログインになる)
-pxxx 設定ファイル(ここではmirror.default)内の「package=xxx」で指定された設定でミラーリングする
-Rxxx 設定ファイル中のxxxにマッチするパッケージ下の設定すべてでミラーリングする

 設定後は、例えばcronで次のようにスケジュールすることで、自動的に定期的なファイル同期が可能になる。

$ crontab -l

0 10 * * * /usr/local/mirror/mirror -p enterprise 2>/dev/null
3 10 * * * /usr/local/mirror/mirror -p developer 2>/dev/null

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ