CLIのFTPクライアントLFTPでFilezillaの便利な機能を実現する方法

Windows、Mac、Linux上で稼働するFTPクライアントといえば、Filezillaを真っ先に思い浮かべる人は多いだろう。

もう、この分野ではFilezillaの独走状態が続いているが、Windows 10にWSL(Windows Subsystem for Linux)が登場してから、少しだけ状況が変化したように思う。

WSL上で走らせるという条件下であれば、例えば、CLI(Command Line Interface)のFTPクラインアントLFTPも、設定次第では、Filezillaの代替となりうるのではないだろうか。

そんな思いつきから、Filezillaの便利な機能を、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にあって標準のFTPコマンドにないものを紹介したい。それが、ディレクトリを丸ごとダウンロードしたり、アップロードする機能だ。

LFTPのmirrorコマンドを、オプションなしで使えば、リモートサーバーのカレントディレクトリを丸ごとダウンロードできる。以下のとおり、特定のディレクトを指定して、その内容をダウンロードすることも可能だ。

> mirror -F 【ディレクトリ名】

反対にローカルのカレントディレクトリの内容を丸ごとアップロードするコマンドは以下のとおり。

> mirror -R

Filezillaでは、こうした機能は別に驚くほどのものではないが、LFTPではさらに細やかなオプションを指定できる。使い方次第では、Filezillaより便利になる可能性もある。オプションの詳細はmanコマンドで調べることができる。

$ man lftp 

ブックマークの活用法

複数のPC間で仕事していて、Filezillaがどうしても手放せなくなる理由のひとつに、ブックマーク(Filezillaではサイトマネージャーと呼ぶ)の存在がある。接続先の情報を一回だけ登録しておけば、パスワードもいっしょに記憶してくれるので、二回目からはワンクリックでアクセスできる。

このブックマークをエクスポートして持ち歩けば、いつでもどこでも、プラットフォームも問わず、同じ環境で仕事ができるわけだ。

実は、これと同じことがLFTPでも可能だ。FTPサーバーにログインした状態から、対話モードで以下のコマンドを実行するだけだ。

> bookmark add 【ホスト名】

【ホスト名】は自分で覚えやすいものを自由につけてよい。

なお、デフォルトでは、パスワードは記録しないことなっている。
もし、Filezillaのブックマークにパスワードを記録させている利用しているなら、最初にエラー回避のために作ったファイル(~/.config/lftp/rc)に次の一行を加える。これで、Filezillaと同等の環境を手に入れることができる。

set bmk:save-passwords 1

このコマンドを実行すれば、パスワードを含めたブックマークが~/.local/share/lftp/bookmarksに作成される。

次回からは、ブックマークに登録されたFTPサーバーに接続する際は、以下のコマンドを実行するだけでよい。パスワードの入力はもう必要ない。

$ lftp 【ホスト名】

その他のブックマーク関連のコマンドは以下のとおり。上から、プックマークの一覧表示、削除、編集である。

> bookmark
> bookmark dell 【ホスト名】
> bookmark edit 【ホスト名】

LFTPはどこまでFilezillaに近づけたか

結論からいうと、Filezillaでなければできなかった機能は、LFTPでも十分に実現可能だ。もちろん、それはFilezillaが必要なくなるという意味ではない。

例えば、SSHでサーバーに接続してコマンド操作しているときなどは、ターミナルを離れたくないかもしれない。そんなときは、LFTPを選択すればよいし、例えば、Gimpで写真加工などをした後、それをそのままサーバーにアップロードしたいという場合などは、GUIのFilezillaを使う方が自然だろう。

要するに、両者を使い分けることで、利便性は大幅に向上するだろうという、あり意味当たり前の結論に至った。まあ、これはCLIとGUIの違いを考えれば当然だが、それでも、WSL(Windows Subsystem for Linux)の登場により、老舗のFTPクライアントソフトのLFTPが、幅広いプラットフォームで使えるようになったことは素直にうれしい。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク