HOME 電脳中心

Webサイトファイル一括転送スクリプト ftpup


●機能概要

・Webページのファイル群をプロバイダへ一括転送するためのスクリプトです。

・前回の転送以降に新規作成・更新されたファイルのみを抽出し、一括して アップロードすることができます(差分転送)。

・更新日時を区別せずに、すべてのファイルを一括してアップロードすること も可能です(全転送)。

・差分転送の際に、ネットワーク障害などでアップロードが途中で中断されて しまった場合は、次回のftpupコマンド実行時には、転送に成功した日時を基 準として差分対象ファイルを抽出するので、転送すべきファイルが転送されな いということはありません。

・Linux(RedHat 5.2)およびFreeBSD(2.2.5)で動作確認しています。一般的な コマンドを用いて作成しているので、多分他のUNIXでもそのまま動作すると思 います。

★ftpupはBourneシェルの勉強を兼ねて作成したものです。Webサイトのファイ ルを管理するソフトウェアとしては、UNIX用でもフリーソフトがいくつかあり ますが、私は自作スクリプトftpupを使ってWebサイトのファイルを管理してい ます。

●初期設定

(1)ダウンロードしたファイルを適当なディレクトリに置き、gzipで復元/伸長 してください。

    $ gzip -d ftpup.gz

(2)ftpupファイルをエディタで開き、各自の環境にあわせて次の部分を変更し てください。変更する部分はリスト上で赤字で示してあります。

(注)転送先ホストによって異なることがあります。ftpコマンドを使用して ファイルを送信し、確認してください。105行目はASAHI-Netの場合です。また、 106行に wu-ftpd-2.4.2 の場合の例をコメントとして示してあります。

ftpupリスト抜粋

     1	#!/bin/sh
     2	#
     3  # ftp batch proccessing script Ver.1.0 
     4  #     Author: OZ  Date: 1998/11/17 Modified Date: 1999/09/25
     5	#
     6	# ftp parameters
     7	#
     8	SITE=oznode                     # site-name (identifiier)
     9	HOST=host.provier.ne.jp         # name of WWW server
    10	USERNAME=userid                 # ftp username of WWW server
    11	PASSWD=password                 # ftp password of WWW server
    12	HOMEDIR=/home/user/html/        # home directory of local node
    13	HOMEDIR2="\/home\/user\/html\/" # same as above (using by sed)
    14	ISPHOME=/homepage/              # home directory of WWW server
    15	MSGCMD=echo
    16	#MSGCMD="logger  -i -p local0.info"
    17	#
    18	# data files
    19	#
    20	TMPDIR=/home/user/tmp
    21	ETCDIR=/home/user/etc/ftpup
    22	FLIST=$ETCDIR/flist.$SITE      # list of updated files
    23	DLIST=$ETCDIR/dlist.$SITE      # list of updated directories
       (中 略)
   102	#
   103	# check ftp-result
   104	#
   105	OKNUM=`grep '^226 STOR' $FTPLOG | wc -l | sed -e 's/ //g'`
   106	#OKNUM=`grep '^226 Transfer' $FTPLOG | wc -l | sed -e 's/ //g'`
   107	if expr $OKNUM \>= $FILNUM > /dev/null
   108	then
       (後 略)

(3)ftpupファイル中の$ETCDIR(20行目)、$TMPDIR(21行目)で指定されている ディレクトリが存在していなければ、作成してください。

(4)パスが通ったディレクトリにftpupファイルを置いてください。その際、 ファイル名を、ftpup.sitename(sitenameの部分は、リストの8行目で指定した もの)とすると便利です。

●使い方

 コマンドラインから、以下のように入力してください。


差分転送の場合: $ ftpup

全転送の場合  : $ ftpup all

差分ファイル抽出日時のリセット: $ ftpup reset

※ftpup の部分は、初期設定の(2)でコピーしたファイル名です。

●注意事項

・初回のftpup実行時は全転送になります。これは、差分ファイル抽出基準日 時ファイルがないためです。
 管理元PCを変更した場合などで、初回から差分転送にしたい際は、まず、 オプション reset を指定してftpupを実行し、差分ファイル作成基準日時ファイ ルを作成してください。そして、その後、差分転送を行ってください。

・自マシン側(アップロード元)でファイル/ディレクトリを削除しても、プロ バイダ側(アップロード先)の当該ファイル/ディレクトリを削除することはで きません。ftpコマンドなどで別途削除してください。

・転送途中でエラーが生じた場合、ftpupコマンドを再実行することでリカバリ できますが、エラーになったセッションで転送しようとしたファイルは、正常 に転送されていても、再実行の際には再転送されます。

・文字コードおよび改行コードの変換機能はありません。あらかじめ、プロバ イダのWebサーバに適合する文字コード・改行コードでファイルを作成してください。

・スクリプト中にftpログオン時のユーザ名・パスワードがそのまま記述され ます。誤って他人に盗まれないよう、十分ご注意ください。

●ダウンロード

※プロバイダの制約により、httpのみサポートしています。


ftpup.gz(1KB)


HOME 小々的軟件
Copyright 尾崎 博 1999