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 の場合の例をコメントとして示してあります。
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のみサポートしています。