Windows、Mac、Linux上で稼働するFTPクライアントといえば、Filezillaを真っ先に思い浮かべる人は多いと思います。もう、マルチOS環境で使えるFTPクライアントといえば、Filezilla一択かもしれません。
ただし、Windows 10にWSL(Windows Subsystem for Linux)が登場したことで、この状況に少しだけ変化が起こる可能性が出てきました。
WSL上で走らせるという条件下であれば、CLI (Command Line Interface)のFTPクラインアントを Filezillaの代替とできる可能性があります。
とまあ、こんな小さな思いつきから、 CLI (Command Line Interface)のFTPクラインアントのひとつLFTPで、これを実現できるかどうか試してみました。
LFTPのインストール
もともとUnix系のOSには、FTPコマンドが標準で用意されています。ただ、これがあまりに素朴で、使いにくいということで、LFTPやNcFTPなどが生まれました。
Utuntu/Debian系のディストロであれば、LFTPは標準リポジトリに入っています。インストールは実に簡単です。もちろん、WSL上のUbuntuやDebianでも、同じようにインストール可能です。
sudo apt install lftp
FTP接続方法と補完機能
インストール完了後、例えば、IPアドレス12.34.56.78のFTPサーバーに設定されているユーザー名hogeでアクセスしたいとします。この場合、ターミナルから次のようなコマンドを打ち込みます。
lftp hoge@12.34.56.78
パスワードを尋ねられるので、hogeに設定しているものを入力します。このパスワードが正しけれログインできる筈です。なお、接続先のFTPサーバーがSSLに対応していない場合には、例えば、対話モードでlsコマンドを実行しようとすると、次のようなエラーが表示されます。
ls: 致命的エラー: Certificate verification:
このエラーを回避するためには、~/.config/lftp内にrcというファイルを作り、次の一行を加える必要があります。
set ssl:verify-certificate 0
lftpを終了(exitコマンドを実行)した後、再度ログインすれば、対話モードでlsコマンドやcdコマンドを打ち込んでも、エラーは表示されなくなります。
対話モードでの基本操作と補完機能
LFTPの基本操作の多くは、標準のFTPコマンドと共通しています。階層間を移動するcdコマンド、ファイルの一覧を表示するlsコマンド、カレントディレクトリを表示するpwdコマンドなど、おなじみのコマンドで操作が可能です。
ファイルのアップロードやダウンロードについても、同様です。以下、共通する主なコマンドを列挙しておきます。上から、単数ファイルのダウンロード、複数ファイルのダウンロード、単数ファイルのアップロード、複数ファイルのアップロードです。
> get 【ファイル名】
> mget 【複数ファイル名】
> put 【ファイル名】
> mput 【複数ファイル名】
ということで、ここまでのところ、LFTPの基本操作は標準FTPコマンドとほとんど変わりません。
続いて、LFTPにあって標準FTPコマンドにはないものをいくつか紹介しておきます。
そのひとつが、補完機能です。階層間の移動やファイル名の選択などで、最初の数文字を打って、タブキーを押せば、後の文字を LFTP が補完してくれます。この補完機能のおかげで、LFTPでの作業効率は比べものにならないほど高いものになります。
ディレクトリの丸ごとダウンロードとアップロード
さらに、 LFTPには、標準FTPコマンド では実現できない強力な機能がもうひとつあります。それが、ディレクトリを丸ごとダウンロードしたり、アップロードしたりできる機能です。
LFTPのmirrorコマンドをオプションなしで使えば、リモートサーバーのカレントディレクトリを丸ごとダウンロードできます。以下のように、特定のディレクトを指定すれば、その内容だけをダウンロードすることも可能です。
> mirror -F 【ディレクトリ名】
反対にローカルのカレントディレクトリの内容を丸ごとアップロードするコマンドは以下のようになります。
> mirror -R
Filezillaでは、これらの機能は別に驚くほどのものでもありませんが、LFTPではさらに細やかなオプションを指定できるという特色があります。使い方次第では、Filezillaより便利になる可能性もあります。オプションの詳細はmanコマンドで調べることが可能です。
man lftp
ブックマークの活用法
複数のPC間で仕事していて、Filezillaがどうしても手放せなくなる理由のひとつに、ブックマーク(Filezillaではサイトマネージャー)の存在があります。接続先の情報を一回だけ登録しておけば、パスワードもいっしょに記憶してくれるので、二回目からはワンクリックでアクセスできるという便利な機能です。
このブックマークをエクスポートして持ち歩けば、いつでもどこでも、プラットフォームも問わず、同じ環境で仕事ができます。
実は、これと同じことがLFTPでも可能です。FTPサーバーにログインした状態から、対話モードで以下のコマンドを実行するだけで実現できます。
> bookmark add 【ホスト名】
【ホスト名】は自分で覚えやすいものを自由につけることができます。
なお、デフォルトでは、パスワードは記録しないことなっていますが、先ほど~/.config/lftp内に作ったrcファイルに次の一行を加えれば、 Filezillaと同じように、ブックマークにパスワードを記録させておくことが可能となります。
set bmk:save-passwords 1
これ以後、コマンド実行時に、パスワードを含めたブックマークが~/.local/share/lftp/bookmarksに作成されるようになります。このブックマークに登録されたFTPサーバーに接続する際には、以下のコマンドを実行するだけでよくなります。パスワードの入力を省略できます。
lftp 【ホスト名】
その他のブックマーク関連のコマンドは以下のとおり。上から、プックマークの一覧表示、削除、編集です。
> bookmark
> bookmark dell 【ホスト名】
> bookmark edit 【ホスト名】
LFTPはどこまでFilezillaに近づけたか
ということで、GUIのFilezillaでなければできなかった機能は、CLIのLFTPでも十分に実現可能だという結論に至りました。ただし、これでFilezillaは必要なくなったということではなく、両者を使い分けることで利便性が大いに向上するだろうということです。
例えば、SSHでサーバーに接続してコマンド操作しているときなどは、ターミナルを離れたくないかもしれません。そんなときは、LFTPが便利でしょうし、逆に、Gimpで写真加工などをした後、それをそのままサーバーにアップロードしたいという場合などは、GUIのFilezillaを使う方が便利でしょう。
WSL (Windows Subsystem for Linux)の登場により、老舗のFTPクライアントのLFTPが、幅広いプラットフォームで使えるようになったことは、本当にうれしい限りです。