mirror 2.9 インストールメモ −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # インストール方法 #--------------------------------------------------------------------------------------------- mirror はファイルを転送するツールです。ファイルの転送元ホスト、転送先ホストのいずれか片方にインストールしますが、mirror を転送元ホスト、転送先ホストどちらにインストールするかによって、設定ファイル「mirror.default」の書き方が異なります。 転送元ホストにインストールする場合: 転送先ホストにファイルを「PUT」する設定を作成 転送先ホストにインストールする場合: 転送元ホストのファイルを「GET」する設定を作成 mirror のソースをインターネットよりダウンロード後、ソースを解凍します。この時、mirror は同階層にソースを解凍するので新規にソース保管用にディレクトリを作成します。 また、mirror-2.9 にはFTP する際、途中で処理が止まる不具合があります。これを回避するため、修正済みな「ftp.pl」ファイルをダウンロードします。 # su root # cd /usr/local/src # mkdir ./mirror_src # cd ./mirror_src # wget mirror-2.9.tar.gz # wget http://ibiblio.org/gferg/patch/ftp.pl.gz # tar zxvf mirror-2.9.tar.gz # gunzip ftp.pl.gz mirror を解凍後、インストール作業を行います。インストールはプログラムと対話式で行います。 # mkdir /usr/local/mirror # perl install.pl 対話式でのインストールでは下記の情報を入力することをお勧めします。 The command to run perl programs is [/usr/local/bin/perl]? → perl のパスを入力します The place to install mirror commands is [/usr/local/bin]? → /usr/local/mirror/bin The place to install mirror support libraries [/usr/local/bin]? → /usr/local/mirror/lib 最後に、mirror 内部で「/usr/local/mirror/lib」に存在するPERL ライブラリを参照しているので、PERLのライブラリ検索パスに「/usr/local/mirror/lib」を追加します。 基本的にmirror は定期的にcron にて実行するので、cron 実行ユーザー(ここではroot) の「.bashrc」に次の行を追加します。 export PERLLIB=$PERLLIB:/usr/local/mirror/lib # 基本設定 #--------------------------------------------------------------------------------------------- mirror は、転送するディレクトリ構造単位に一つの設定ファイルを用います。つまり、設定ファイルによってmirror の動作をディレクトリごとに変更することができます。 mirror の転送ディレクトリ構造は”パッケージ”という単位で管理されます。以下の方法で設定ファイルを作成してください。 各ディレクトリごとの設定ファイルを格納するディレクトリを作成します。以降、mirror の設定ファイルは/usr/local/mirror/packages 以下に格納することとします。 # cd /usr/local/mirror # mkdir ./packages mirror は、「/usr/loca/mirror/mirror.default」をディフォルトの設定として用います。/usr/local/mirror/packages 以下に作成した各設定ファイルは、ディフォルトの設定を上書きします。 mirror は次の2 パターンの使い方があります。 ・リモートサーバーのファイルをローカルサーバーにPUT する ・ローカルサーバーのファイルをリモートサーバーにPUT する 通常、「/usr/local/mirror/mirror.default」には上記2 パターンで共通する項目を記述し、/usr/local/mirror/packages 以下設定ファイルにパターンごとの設定を記述します。 以下はディフォルトの設定のサンプルとそれぞれの設定行の意味です。 ↓ ココから ------------------------------------------------ package=defaults # ローカルディレクトリが存在することをチェックするかの判断 # true : チェックする # false : チェックしない local_dir_check=true # マッチしたファイルを転送しない local_ignore=.mirror|.bak|RCS # 転送元サーバーと同じファイルモードでコピーするかの判断 # false : dir_mode、 file_mode による # true : ファイルモード固定 mode_copy=false # 転送するファイルやディレクトリのファイルモード # mode_copy=false にした場合のみ有効 dir_mode=0755 file_mode=0644 # 転送先サーバーに残すログファイル名 update_log=.mirror # 無効なシンボリックリンクもコピーするかの判断 # true : する # false : しない make_bad_symlinks=false # 転送元サーバーのファイルが削除された場合でも転送先のファイルを消さない指定 # true : 転送元サーバーに合わせて削除する # false : 削除しない do_deletes=false # 転送完了通知先メールアドレス mail_to=admin@example01.jp # FTP 接続のタイムアウト時間 timeout=300 ↑ ココまで ------------------------------------------------ ● リモートサーバーのファイルをローカルサーバーにPUT する リモートサーバーのファイルをローカルサーバーにPUT するパターンは、特定のサイトをローカルにミラーする際によく用いられる手法です。 以下は”test01.example01.jp”サイトの”/”直下全てのファイルを”test02.example01.jp”の”/sites”直下にPUT する設定のサンプルとそれぞれの設定行の意味です。パッケージ名は「mirror」としました。 ↓ ココから ------------------------------------------------ package=mirror # PUT 方向 # true :リモートサーバーのファイルをローカルサーバーにPUT する # false :ローカルサーバーのファイルをリモートサーバーにPUT する get_file=true # ローカルサーバのホスト hostname=test02.example01.jp # リモートサーバーのホスト site=test01.example01.jp # FTP 接続の際のユーザー名とパスワード remote_user=admin remote_password=XXXXX # リモートディレクトリパス remote_dir=/ # ローカル保存先ディレクトリパス local_dir=/sites # 転送したファイルのユーザとグループ(root の場合は0) # 基本的にmirror 起動ユーザーのユーザー名とグループにする # mirror をROOT で起動した場合は任意に指定可能 user=webmaster-admin group=ppp ↑ ココまで ----------------------------------------------------------------------------------- ● ローカルサーバーのファイルをリモートサーバーにPUT する ローカルサーバーのファイルをリモートサーバーにPUT するパターンは、ローカル上のファイルをリモートにバックアップする際によく用いられる手法です。 以下は”localhost”サイトの”/”直下全てのファイルを”test01.example01.jp”の”/sites”直下にPUT する設定のサンプルとそれぞれの設定行の意味です。パッケージ名は「backup」としました。 ↓ ココから ------------------------------------------------ package=backup # PUT 方向 # true :リモートサーバーのファイルをローカルサーバーにPUT する # false :ローカルサーバーのファイルをリモートサーバーにPUT する get_file=false # ローカルサーバのホスト hostname=localhost # リモートサーバーのホスト site=test01.example01.jp # FTP 接続の際のユーザー名とパスワード remote_user=admin remote_password=XXXXX # リモート保存先ディレクトリパス remote_dir=/sites # ローカルディレクトリパス local_dir=/ ↑ ココまで ------------------------------------------------ # 実運用例 #--------------------------------------------------------------------------------------------- mirror によってファイルをミラーまたはバックアップする際のファイルに関する転送規約は次のようになっている。 ※ ファイルの転送規約 ※ 基本的に転送先(dest) に転送元(src) ファイルがなければミラーし、転送先に転送元ファイルがあった場合はミラーしない。が、ファイルのサイズが更新されている場合はミラーする。 実際mirror を実行するには次のコマンドにて行う。なお、mirror の転送方向は全て/usr/local/mirror/package 直下の設定ファイルに依存する。 # cd /usr/local/mirror # ./bin/mirror -d ./package/mirror または ./bin/mirror -d ./package/backup mirror 実行時に”-n”オプションをつけることで実行内容を実行すること無しに確認することができる。 ※ 注意 ) mirror は基本的に転送先、転送元に同一ホストを指定してある場合は”ローカルには転送できません”のようなエラーとなります。