やるきなし

2016/04/01 11:44 / lftp 4.7.0

lftpだが,4.6.4から4.7.0でいろいろ変わったらしくmirrorに躓く.

まず以下のようにEPSVコマンド(RFC 2428)を発行してしまい,私が使っているサーバでは以下のような感じでコケる.

---> EPSV
<--- 501 EPSV: Not owner
---- Switching passive mode off
---> LIST -a
---> ABOR
---- Closing aborted data socket
---- Closing control socket

ftp:prefer-epsv trueがdefaultになったらしく,EPSVではなくPASVを使うようにするには,以下の設定が必要.

set ftp:prefer-epsv false

あと,どうもmirrorコマンドを実行した際に一部ファイルでタイムスタンプが「適切に」取れない気配があって,最新版になっているのに無駄にファイルを転送してしまう.サーバとの相性もあるのかもしれないが.これはMLSDコマンドをdefaultで使うようになったかららしい.これを元の挙動,つまり4.6.4のdefaultに戻すには以下の設定をする.

set ftp:use-mlsd false

これでMLSDのかわりに,LIST -aして各ファイル/ディレクトリに対してMDTMでタイムスタンプを取得するようになる.もちろんmirror速度は落ちる.MLSDもMDTMもRFC 3659のコマンドなのだが,なにやら実装がいろいろあるらしい.

以上,該当するchangelogは以下のような感じになっている.

[/usr/share/doc/lftp/changelog.gz]
Version 4.7.0 - 2016-03-28
(snip)
* ftp: prefer EPSV by default.
* ftp: enable MLSD by default (when supported).
(snip)

Related articles