ホームページ更新用スクリプト(upload.pl)
upload.pl
1. 必須モジュール
以下のものが必要になります。適当に調達して下さい。
Net::FTP (libnetに含まれる)
File::Listing (libwwwに含まれる)
*圧縮していない
upload.pl/uploadrc
*書庫ファイル
upload.tar.gz
2. 最近の変更点
- [03/15]ディレクトリ作成の不備を修正。
- [12/13]複数サーバにまだ対応していなかったの
で、さらに修正。
- [12/11]自動的にディレクトリを作らなかったバグを修正。
- [6/19]データファイルの保存場所を、同じにしても
大丈夫なようになった。
- [6/19]複数サーバに対応していると思ったら、していなかったので修正
- [6/13]またも発見したバグを修正
- [6/1]致命的なバグを修正。
- [5/23]Vectorに
掲載
- [5/22]複数FTPの設定を使い分けることができる。
- [5/18]ファイルリスとを表示。更新時間も併記
- [5/18]podのマニュアルもつたない英語で追加。
- [5/14]ファイルタイプを自動的に判別。
- [5/14]ローカルで消したファイルを、サーバでも消すように設定。
- [5/14]UNIXのシステムコマンドを利用しないように改良。File::Listingも必要なくなりました。
- [5/14]設定ファイルのパーミッションをチェック。
3.内容について
UpFTPに手を加えて、
個人的に使いやすくなるように改良したもの。
結城さん、ありがとう!
3.1 改良点
結城さんがあげていたtodoも若干やってみました。
- UpFTPでは必要だった一覧用のファイル(filelist.txt)を廃止し、
ディレクトリに含まれているファイルを全て対象にするようにした。
- 編集する際にできてしまうバックアップファイル
(e.g. hoge.html~、hoge.bak)はアップロードしないようにした。
(拡張子で判別し、設定可能)
- ファイルタイプを自動的に判別。モードを切り替える
- 複数FTPサーバの設定を、一つのファイルに保存可能。
- ローカルで消したファイルを、サーバでも消すように設定。
- 設定ファイルを分離。パーミッションをチェック。
- テスト用のオプションを追加。
つまり、ディレクトリごとコピーしてしまうようにできています。
htmlの更新などに使ってください。
3. 使い方
3.1 設定ファイルの準備
サンプル
uploadrcの名前を変更して使ってください。
~/.uploadrcに設定を書き込みましょう。
もちろん、プログラム内部にそのまま埋め込んでもよいのだけれど、
.uploadrcの設定が優先されるので注意。
Windowsを利用している人は、この設定ファイルを使えません。
スクリプト内に直接、諸設定を書き込んでください。
(もしくは、HOMEという環境変数を設定してください。)
3.1.1 default
オプションを省略したときに選択されるサーバの番号。
3.1.2 server
サーバの番号をつけて、設定を使い分ける。
この行のあとに、そのサーバの設定をしてください。
とりあえずつけておいた方が、動作は安定します。
適当に数字をつけてください。
3.1.3 debug
動作が不信なときにオプションをつけてみてください。
それ以外の時は必要なさそうです。
3.1.4 hostname, username, password
それぞれ、必要なことを書いてください。
passwordを書いたときは、くれぐれも扱いに注意しましょう。
3.1.5 remoterootdir
送信先での、あなたが使う一番上のディレクトリのこと。
3.1.6 localroodir
送信元(あなたの手元のマシン)での、あなたが作っているhtmlの一番上の
ディレクトリのこと。
3.1.5 setfilelocation
送信の履歴をスクリプトで作るので、
それを保存する場所を指定しましょう。
好きなところでかまいません。
3.2 送る
スクリプトを実行しましょう。
はじめは設定が正しいかどうかを確認するために、
テストをしても良いかもしれません。
3.3 送信履歴を消去するには
setfilelocationで指定したディレクトリにある、「send.db」を消しましょう。
それだけでだいじょうぶです。
3.4 オプション
3.4.1 switch command
-s [number]
を入れることで、設定ファイルに書かれたサーバを使い分けることができる。
3.4.2 list mode
-l
をつけることで、今までに送信したファイルの一覧をみることができます。
また、ファイルの更新時間も併記します。
3.4.3 noftp mode
noftp=1としたのと同様の効果を得ることのできる、
「-n」オプションを用意しました。
使うかどうかはわからないですけどね。。
4.やってみようかと思っている事
- サーバにあってローカルに無いファイルは、サーバから落とす。もしくは、
警告を出す。
- サーバにあるファイルの時間と、ローカルの時間を比較するモードも作る。
4 存在意義
自分でこねくりまわす事のできる、
実用になるスクリプトが欲しかったのでやってみました。
さらに多機能なものありますが、僕にはこれくらいで十分です。
行数が、いつのまにか長くなっていました。いつのまにか、450行オーバー。
二倍を越す行数になってしまってます。。
これをいじってみたい人へ。
これを土台にしても構いませんが、UpFTP
のほうが本家ですよ。