2011/04/14

FTPでログファイルなどをレジュームダウンロードする

NILScriptのFTPユニットを利用すれば、自分の管理するWebサイトにFTPで接続してアクセスログなどのファイルを定期的に自動ダウンロードさせたりすることも可能です。

末尾に追記されていくタイプのログファイルの場合、毎回丸ごとダウンロードするのではなく、取得済みのバイト数だけスキップして未取得の部分だけをダウンロードし、ローカルの取得済みファイルに追記するレジュームダウンロードを行うと、無駄な転送を減らせて効率的です。

NILScriptのFTPユニットでは、下記の例のように、FTPオブジェクトのfile()メソッドで取得したFTPFileオブジェクトのdownload()メソッドを呼び出すとき、第2引数にtrueを指定すれば、第1引数に指定した保存先ファイルが存在した場合にそのファイルにレジュームダウンロードが行われます。

try{
    var ftp=new (require('FTP').FTP)({
        host:'ftp.example.com',
        user:'aaa',
        password:'bbb',
    });
 var f=ftp.file('/public_html/access.log');
 f.download('R:\\access.log',true);
}finally{
    free(ftp);
}

第2引数を省略したりfalseを指定した場合は、既存の保存先ファイルの内容は上書きされます。
画像などの追記型でないファイルをレジュームダウンロードしてしまうと、ファイル破損などの問題が生じるので注意して下さい。

0 件のコメント:

コメントを投稿