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)