Index > lftpのmirror(ミラー)機能を使ってウェブサイトを更新するときにアップロード対象から特定ファイルを除外する方法
Sun, May 20, 2007

lftpのmirror(ミラー)機能を使ってウェブサイトを更新するときにアップロード対象から特定ファイルを除外する方法

lftp はとても便利。

諸事情により、XonWindowsからCygwinに乗り換えたが、 最新のCygwinにはlftpのバイナリが含まれていてとても助かる。

諸事情

いままで、vimなどで日本語の扱いが楽、などの理由で、 CygwinのかわりにXonWindows3を使ってきたが、Python2.5が使いたかったので、 Cygwinを使うことにした。
Cygwin付属のvimは、そのままでは日本語が扱えないが、 そこはがんばって設定するとかいった努力はやめて、kaoriyaのvimを 素直に使うことにした。

lftp で特定ファイルを除外(exclude)してミラー(mirror)

lftpでローカルで構築したウェブサイトをサーバにアップロードするときに mirrorコマンドを使う。
このとき、ローカルにあるが、サーバにアップロードしてほしくないファイルを -x または -X オプション を使って除外(exclude)することができる。

ステップ1

ファイル upload.lftp ファイルを作成して以下のような内容を記述

open ftp.foobar.jp
cd ~/
mirror -Rv -X .svn/ -X *.class -X *.psd -X *.txt -x Makefile www/
exit

verboseオプション

verbose オプションは -vvv (または --verbose=3)のように指定して、ログの饒舌度合いを調整できます。 0-3までの範囲で指定できて、0 は何もログを出さない。

ステップ2

以下のコマンドで、 現在のディレクトリにある www を ftp.foobar.jp の ~/www と同期できる。

$ lftp -f upload.lftp

lftp の -x や -X オプション

man lftp すると...

-x RX, --exclude RX exclude matching files
-X GP, --exclude-glob GP exclude matching files

egrep使ったことないので、 just like in egrep といわれましても・・・ とりあえず、拡張正規表現ということは、正規表現が使えるということだと思う。

glob の意味がわかりません。

In computer programming, the verb glob or globbing is used to refer to an instance of pattern matching behavior. The noun glob is sometimes used to refer to a particular pattern, e.g. "use the glob *.log to match all those log files".

要するにbashなどでよく指定しているように、

$ ls *.txt 

とすると、カレントディレクトリの txt 拡張子を持つファイルを全部指定できる、という パターン指定のことのようです。

以上から...

した上で、www 以下全部をリモートにミラーする場合は、以下のようになります。

mirror -Rv -X .svn/ -X *.class -X *.psd -X *.txt -x Makefile www/

実際は、-X Makefile でもいけるのかもしれないが、試していない。

 Twitter
follow me on Twitter
 Categories