CLIのFTPクライアントのLFTPのインストール


コマンドラインベース(CLI)のFTPクライアントのLFTPを見ていきます。

LFTP - sophisticated file transfer program


コマンドラインベースのFTPクライアントでは最初からftpやsftpのコマンドが入っていることが多いですが、後ほど触れますパーミッションあたりで操作が大変になりますので、パーミッションの問題を簡単に解決できるLFTPを使うことにしています。




先にFTPについて触れておきます。

FTP(File Transfer Protocol)とは、ネットワーク上でファイルを転送するための通信プロトコルです。

要約するとコンピュータ同士でファイルをやり取りするためのルールのようなものになります。


FTPはFTPサーバとFTPクライアントという2つのプログラム間でのやり取りになります。


FTPサーバはファイルを保存しているコンピュータで、クライアントからの要求を受け付け、ファイルの送受信を行います。


FTPクライアントはファイルを送受信したい側のコンピュータで、FTPサーバーに接続し、ファイルのアップロードやダウンロードを行います。


今回の内容では、FTPサーバのことをリモート(remote)と呼び、FTPクライアントのことをローカル(local)と呼ぶことにします。




今回は例として、下記の構成でLFTPを試します。

リモート(FTPサーバ)

マシン : Raspberry Pi 5 8G

OS : Raspberry Pi OS(64-bit)

ホスト : raspberrypi.local

※ホストの箇所にはIPアドレスでも構いません

ユーザ : pi

パスワード : raspberry


ローカル(FTPクライアント)

aptを使いたいのでDebian系Linuxが望ましい

※クロームブックのクロスティーニ等

クロームブックで開発環境を構築する




ローカルでターミナルを起動し、下記のコマンドを実行します。

$ sudo apt update
$ sudo apt install lftp

下記コマンドでlftpのインストールの確認を行います。

$ lftp -v
LFTP | Version 4.9.2 | Copyright (c) 1996-2020 Alexander V. Lukyanov

のような出力があれば良いです。


** 注意 **

以後の内容は、SSHで鍵認証の設定を行っている場合は接続拒否を受ける場合があります。

鍵認証を行っている場合はSFTPの設定を行ってから読み進めてください。

LFTPでsftpに接続する


ローカルからlftpでリモートにアクセスしてみます。


アクセスのコマンドは

$ lftp ユーザ@ホスト

になりますので、今回であれば、

$ lftp pi@raspberrypi.local

になります。

Password: 

が出力されますので、raspberry を入力してエンターキーを押します。


パスワードが正しければ、

lftp pi@raspberrypi.local:~>  

のようなプロンプトに切り替わります。




動作の例として、ローカルの

/home/***/ftp/aaa/sample.txt

にあるファイルをリモートの

/home/pi/

以下のディレクトリにファイルを送信してみます。


lftp上でのファイルの送信のコマンドは

> put ローカルのファイルパス

になります。


上記の内容に従えば、

> put /home/***/ftp/aaa/sample.txt

になり、リモートの方では

/home/pi/sample.txt

のファイルパスになるように転送されます。


ローカルのファイルパスをフルパスで指定するのは面倒なので、相対パスで

> put ftp/aaa/sample.txt

にしても構いません。


相対パスで指定するのであれば、カレントディレクトリを把握する手段が必要です。

> lpwd

でカレントディレクトリを調べることが出来ます。


ローカルの方でディレクトリを移動してからputする場合は、

> lcd ftp/aaa/
lcd ok, local cwd=/home/***/ftp/aaa
> put sample.txt

lcdでファイルのあるディレクトリに移動してから、putコマンドを実行します。


lftpでは、通常のコマンド(cdやpwd)の頭に l (エル)を付けるとローカルの操作になり、何も付けないとリモートでの操作になります。




次の例として、リモートの

/home/pi/ftp/bbb/remote.txt

にあるファイルをローカルの

/home/***/

以下のディレクトリにファイルを送信してみます。


lftp上でのファイルの受信のコマンドは

> get リモートのファイルパス

になります。


上記の内容に従えば、

> get /home/pi/ftp/bbb/remote.txt

になります。


リモートのファイルパスをフルパスで指定するのは面倒なので、相対パスで

> get ftp/bbb/remote.txt

にしても構いません。


相対パスで指定するのであれば、カレントディレクトリを把握する手段が必要です。

> pwd

でカレントディレクトリを調べることが出来ます。


リモートの方でディレクトリを移動してからputする場合は、

> cd ftp/bbb/
> get remote.txt

cdでファイルのあるディレクトリに移動してから、getコマンドを実行します。


> exit

でリモートとの接続を終了します。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。