Hi-Hoのためのmirrorの設定

Linux にはいくつかバックアップツールがあるのですが、その中の mirror の設定のメモです。
mirror はプログラムではなく perl のスクリプトでできているようです。
ローカルのサーバにあるファイルを Hi-Ho ( http://www.tim.hi-ho.ne.jp/yutakano/ )にコピーする方法と、その逆に Hi-Ho からファイルをローカルにコピーする方法です。
ローカルのサーバは TurboLinuxServer7 です。
まずmirror-2.9-9.noarch.rpm をインストールする。たぶんインストールされてると思う。
package の指定がなんかうまくできないので設定ファイルを分けて動かしてます(苦笑)。
動きゃいいんだよ。

サーバ名や、ユーザ名を適当に自分の環境に合わせて読んでください。質問不可。



/usr/bin/ 以下に以下のファイルがあることを確認する。
mirror.pl
mirror

/usr/lib/mirror/ 以下に以下のファイルがあることを確認する。
dateconv.pl*
ftp.pl*
lchat.pl*
lsparse.pl*

この中の dateconv.pl にはバグがあるようなので、最後のあたりを以下のように修正する。
実行結果をメールするときに日付の表示がおかしくなってます。
別にたいしたことないところなので修正しなくてもいいです。
ファイルの最後の方です。赤字の様に追加変更する。

# input time number, output GMT string as "dd Mmm YY HH:MM"
sub main'time_to_standard
{
        package dateconv;

        local( $time ) = @_;

        local( $sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst ) =
                 gmtime( $time );
        if( $year < 70 ){
                $year += 2000;
        }
        else    {
                $year += 1900;
        }
        return sprintf( "%2d $months[ $mon + 1 ] %04d %02d:%02d", $mday, $year, $hour, $min );
}
 


mirror の動作確認

$ mirror -v
と入力して以下のような感じに返ってきたら大丈夫だと思う。

$Id: mirror.pl,v 2.9 1998/05/29 19:01:07 lmjm Exp lmjm $


自分のディレクトリにダウンロード用とアップロード用の設定ファイルを作成する。

ダウンロード用 mirror.copyfrom
(/home/yutakano/mirror.copyfrom)
Hi-Hoの /html/ フォルダの中身を ローカルの/home/httpd/html/yutakano/ へコピーします。
cgi-bin のコピーは含まれていません。

#  これはデフォルトの mirror の設定です。
#  サンプルなので適当に変更して使用してください。
#
# <yutakano@tim.hi-ho.ne.jp>
package=defaults
        ##  default の設定
        ##  local  :  自分のサーバ
        ##  remote  :  ミラー先のサーバ
        ##  ローカルサーバのホスト名
        hostname=hogehoge.com
        ##  ローカルサーバから転送するディレクトリ
        local_dir=/home/httpd/html/
        ##  local_dir が存在することを最初にチェック
        local_dir_check=true
        ##  実行結果の送り先
        mail_to=yutakano@localhost
        #
        ##  ミラー先サーバ名
        site=www.tim.hi-ho.ne.jp
        ##  ミラー先サーバのユーザー名
        remote_user=yutakano
        ##  ミラー先サーバのパスワード
        remote_password=XXXXXXXX
        ##  ミラー先ディレクトリに残すログファイル名
        update_log=.mirror
        ##  転送元と同じファイル・モードでコピーする
        ##  (false : ファイル・モード固定)
        mode_copy=false
        ##  転送するファイルやディレクトリのファイル・モード
        dir_mode=0755
        file_mode=0644
        ##  転送するファイルやディレクトリのユーザとグループ (root の場合は0)
        user=501
        group=501
        ##  無効なシンボリック・リンクもコピーする(するtrue,しないfalse)
        make_bad_symlinks=false
        ##
        ##
        timeout=300
        ##

package=copyfrom
        ##  ミラー先サーバからコピーする設定
        ##  ファイルをミラー先からローカルに持ってくる
        ##  (するtrue,しないfalse)
        get_file=true
        ##  ミラー先ディレクトリ
        remote_dir=/html
        ##  ローカルディレクトリ
        ##  (default+hogehoge)
        local_dir+yutakano
        ##  転送元のファイルを削除した場合にミラー側のファイルを消す
        ##  (するtrue,しないfalse)
        do_deletes=false
        ##
 

アップロード用 mirror.copyto
(/home/yutakano/mirror.copyto)
ローカルの/home/httpd/html/yutakano/ フォルダの中身を Hi-Hoの /html/ へコピーします。
cgi-bin のコピーは含まれていません。

#  これはデフォルトの mirror の設定です。
#  サンプルなので適当に変更して使用してください。
#
# <yutakano@tim.hi-ho.ne.jp>
package=defaults
        ##  default の設定
        ##  local  :  自分のサーバ
        ##  remote  :  ミラー先のサーバ
        ##  ローカルサーバのホスト名
        hostname=hogehoge.com
        ##  ローカルサーバから転送するディレクトリ
        local_dir=/home/httpd/html/
        ##  local_dir が存在することを最初にチェック
        local_dir_check=true
        ##  実行結果の送り先
        mail_to=yutakano@localhost
        #
        ##  ミラー先サーバ名
        site=www.tim.hi-ho.ne.jp
        ##  ミラー先サーバのユーザー名
        remote_user=yutakano
        ##  ミラー先サーバのパスワード
        remote_password=XXXXXXXX
        ##  ミラー先ディレクトリに残すログファイル名
        update_log=.mirror
        ##  転送元と同じファイル・モードでコピーする
        ##  (false : ファイル・モード固定)
        mode_copy=false
        ##  転送するファイルやディレクトリのファイル・モード
        dir_mode=0755
        file_mode=0644
        ##  転送するファイルやディレクトリのユーザとグループ (root の場合は0)
        user=501
        group=501
        ##  無効なシンボリック・リンクもコピーする(するtrue,しないfalse)
        make_bad_symlinks=false
        ##
        ##
        timeout=300
        ##

package=copyto
        ##  ミラー先サーバへコピーする設定
        ##  ファイルをミラー先からローカルに持ってくる
        ##  (するtrue,しないfalse)
        get_file=false
        ##  ミラー先ディレクトリ
        remote_dir=/html
        ##  ローカルディレクトリ
        ##  (default+hogehoge)
        local_dir+yutakano
        ##  転送元のファイルを削除した場合にミラー側のファイルを消す
        ##  (するtrue,しないfalse)
        do_deletes=true
        ##  転送しないファイルを指定する。
        ##  (正規表現) (.htaccess、count、CSV、.bakで終わるファイルを除外)
        local_ignore=(.htaccess|count|CVS|\.bak)
        ##

ファイルの作成後に
$ chmod 600 ./mirror.copyto
$ chmod 600 ./mirror.copyfrom
とする。
パスワードがこのファイルに直接書き込まれているので他のユーザに見せないため。


mirror を動かす

$ mirror mirror.copyfrom
と入力するとファイルをコピーしているメッセージが出てくる。
ローカルにファイルがコピーされているはず。
2回目以降は更新されたファイルのみが転送されます。
続けてもう一度やると以下のようなメッセージが出るはず。

package=copyfrom www.tim.hi-ho.ne.jp:/html -> /home/httpd/html/yutakano
No files to transfer
 
 

$ mirror mirror.copyto
と入力するとローカルのフォルダの中身をHi-Hoへ転送する。
 


その他
crontab と組み合わせれば自動化ができるが、その時は「mail_to= 」としておいた方がいいかも。
インストールのしかたによって mirror ( mirror.pl ) のインストールされる場所が異なるようなので確認すること。
必要ならば適当にリンクを作っておく。
 


もどる
yutakano (yutakano@tim.hi-ho.ne.jp)

Jan 29, 2000