batファイルによるFTP自動実行(Windowsタスク)
豆知識
|
powered by

|
|
Windowsのタスクを使ってFTPを自動実行する方法を紹介します。
レンタルサーバーや自宅LAN上のPCにあるファイルのバックアップやログのバックアップを
自動化することができるようになります。管理人の場合ははレンタルHPの
アクセスログを自動取得するのに使ったりしてます。
まず、タスクに追加するためにはバッチファイル(.bat)を作ります。
バッチファイルとは何かというと、WindowsのDOSプロンプト用のコマンドをテキストファイルにまとめて書いたもので、
コマンドを一挙に実行するためのファイルです。
バッチファイルにFTPを実行するよう書いておき、Windowsのタスクとして
自動実行するよう設定すれば、FTPの一連の動作を自動化することができます。
バッチファイルでFTPを実行するためには「バッチファイル」
と「コマンドファイル」が必要です。以下のファイルをテキストエディタで作成し、
同じフォルダに置いてください。(「xrea.com」のログ取得を例としています。)
<auto_ftp.bat>(バッチファイル)
ftp -s:ftpcmd.txt>>ftp.log
|
<ftpcmd.txt>(コマンドファイル)
open s○○.xrea.com
ログインユーザー名
パスワード
asc
cd /log
lcd D:\Web_page\log
get (ドメイン名).log
disconnect
bye
|
設定値は各自の状況に合わせて書き換えてください。書き換えたら
auto_ftp.batをダブルクリックすると、指定したホストのディレクトリから
ファイルをダウンロードすることができます。FTPコマンドが上手くいかない場合は
DOSプロンプトを立ち上げて、コマンドファイルの内容を1行ずつ手で打ち込んでみると
どこに誤りがあるかわかります。また、バッチファイル名を"ftp.bat"とすると
正常に動作せず、無限ループに陥ることがあるので気をつけてください。
FTPコマンドの詳細は以下の通りです。
接続 open FTP先サーバ(またはIP) | open で接続したらユーザ名とパスワードを入力してログインします。 アノニマス FTP サーバの場合は、ユーザ名は anonymous、パスワードはあなたの E-mail を入力します。 |
ディレクトリ位置確認 pwd | FTP 先のディレクトリ位置が、絶対パス名で表示されます。 |
ファイル一覧 dir | FTP 先ディレクトリ内のファイル一覧が表示されます。 |
ディレクトリ位置変更 cd ディレクトリ名 | FTP 先の作業ディレクトリ位置を変更します。 |
ローカル側ディレクトリ位置変更 lcd ディレクトリ名 | ローカル側( ftp コマンドを実行した側)のディレクトリ位置を変更します。 |
ローカル側ディレクトリ位置確認 lcd | lcd だけを入力するとローカル側の現在の絶対パス位置が表示されます。 Windows 系パソコンの MS-DOS プロンプトから ftp している場合は、C:\WINDOWS\SYSTEM のような書式になります。 |
アスキーモード asc または ascii | FTP によるファイル転送をテキストモード(アスキーモード)にセットします。HTMLファイルなどの転送に用います。 |
バイナリモード bin または binary | FTP によるファイル転送をバイナリモードにセットします。画像ファイルなどの転送に用います。 |
ダウンロード get ファイル名 | 指定ファイルをローカル側にダウンロードします。 このときファイルはローカル側の現在のパス位置( lcd で表示される場所)に保存されます。 |
アップロード put ファイル名 | 指定ファイルをローカル側からアップロードします。 このときファイルは FTP 先の現在のパス位置( pwd で表示される場所)に保存されます。 |
複数ファイルのダウンロード mget ファイル名1 ファイル名2 | 複数のファイルを指定してローカル側にダウンロードできます。アスタリスク * を使って mget *.html のような記述も可能。 ファイル毎に確認の入力を聞いてきますので y(yes) または n(no) を入力します。 |
複数ファイルのアップロード mput ファイル名1 ファイル名2 | 複数のファイルを指定してローカル側からアップロードできます。アスタリスク * を使って mput *.gif のような記述も可能。 ファイル毎に確認の入力を聞いてきますので y(yes) または n(no) を入力します。 |
インタラクティブモード解除 prompt | mget や mput を使用するときファイル毎の確認入力が不要になります。再度 prompt を入力するとインタラクティブモード ON に戻ります。 |
ディレクトリ作成 mkdir ディレクトリ名 | FTP 先に新しいディレクトリを作成します。 (ユーザ権限によってはできない場合があります。) |
ディレクトリ削除 rmdir ディレクトリ名 | FTP 先の中身が空のディレクトリを削除します。 (ユーザ権限によってはできない場合があります。) |
ファイル名変更 rename ファイル名 新ファイル名 | FTP 先の既存ファイル名やディレクトリ名を変更します。 (ユーザ権限によってはできない場合があります。) |
ファイル削除 delete ファイル名 | FTP 先のファイルを削除します。 (ユーザ権限によってはできない場合があります。) |
複数ファイルの削除 mdelete ファイル名1 ファイル名2 | FTP 先の複数のファイルを削除します。 (ユーザ権限によってはできない場合があります。) |
パーミッション変更 quote site chmod *** ファイル名 | パーミッション(属性)の変更を行います。 サーバ設定やユーザ権限によっては使用できない場合があります。 |
ヘルプ help | 使用可能な FTP コマンドの一覧が表示されます。コマンド毎の説明は help に続けてコマンドを入力。 |
切断 close | FTP 先との接続を切断します。 |
終了 quit または bye | これで FTP 終了 |
実行できることが確認できたら、次はWindowsのタスクに追加します。
[スタート]→[設定]→[コントロールパネル]→[タスク]を開き、
[スケジュールされたタスクの追加]を起動する。実行するプログラム選択で
"auto_ftp.bat"を指定し、実行する単位や時間を指定すればFTP自動化完了です。
さらに、ダウンロード後にファイル名変更をしたい場合は、バッチファイルに
ファイル名変更のコマンドを追加すると良いでしょう。
<auto_ftp.bat>(バッチファイル)
ftp -s:ftpcmd.txt>>ftp.log
ren 元ファイル名 新ファイル名
|
また、複雑な文字列操作が必要な場合、バッチで実現するのは難しいので、
Perlスクリプトによって処理を実行することもできます。
(Active Perlなどを入れている必要があります。)
Active Perlのインストールについては『Perlモジュール(Active Perl)のインストール』
をご覧ください。
以下の例では、ファイル名に昨日の日付("041030"等)を追加しています。
<auto_ftp.bat>(バッチファイル)
ftp -s:ftpcmd.txt>>ftp.log
perl rename.pl
|
<rename.pl>(Perlスクリプト)
($day,$month,$year) = (localtime(time-60*60*24))[3..5]; #昨日のログのため
$year -= 100; #下2桁のみにする
$month++;
$ymd = sprintf("%02d%02d%02d", $year, $month, $day); #年月日を2桁ずつで表現
rename("○○.log", "○○_$ymd.log"); #ファイル名に日付を追加
|
こちらは管理人のおすすめです。もしよかったらご覧ください。
トップページ
★姉妹サイト
マウスコンピューターフリーク・・・激安パソコン紹介
【HP・WEB収入】課題達成型アフィリエイト・・・ホームページで広告収入
|