ぱそくま ろご
Linux > lftp

lftp

lftpとは

サーバーに接続して、ファイルをやり取りするアプリケーション(いわゆる、FTPクライアント)です。 マニュアルから引用すると「洗練されたファイル転送プログラム」。平たく言うとちょっといいftpソフト。 通常のftpコマンドにはない機能もあり便利です。

サーバーに接続する

サーバーへの接続方法は以下のように色々あります。 また、ファイルアクセス方式にhttp等も使用できるので接続先(host)にhttp://www.hogehoge.comのような指定もできます。

lftp接続例1:ダイレクトにサーバーへ接続
  • [paso ~]lftp -u user[,passwoed] hostname
lftp接続例2:lftpを立ち上げてからサーバーに接続
  • [paso ~] lftp
  • lftp :~> open -u user[,passwoed] hostname
lftp接続例3:.netrcファイルを使用してサーバーに接続
  • [paso ~] more ~/.netrc
  • machine hostname
  • login user
  • password passwoed
  • [paso ~]lftp hostname
lftp接続例4:.lftprc/bookmarkファイルを使用してサーバーに接続
  • [paso ~] more ~/.lftp/bookmarks
  • bookmarkname ftp://user:[passwoed]@hostname[dir]
  • backupserver ftp://hoge:hogenopassword@192.168.1.1/backup/
  • [paso ~]lftp backupserver


.lftprc

lftpは起動前に~/.lftprcという設定ファイルを読み込みます。 このファイルには、aliasやsetコマンドなどのlftpのオプション設定を記述します。 .lftprcに記述しなくても、lftpを起動してから設定することも可能です。 なお、leftpを起動した後にsetと入力すると現在の設定が、set -aと入力すると全ての設定が一覧表示されます。

.lftprcの例

[paso ~] more ~/.lftprc
alias a alias
a ll ls -alF
set ftp:sync-mode off
set bmk:save-passwords yes
set オプションでよく使いそうなもの一覧
オプション値形式内容
bmk:save-passwordsbooleanonの場合、bookmark addコマンドでブックマークを追加する際にパスワードも保存します。デフォルトはoff。
cmd:at-exitstringlftp終了時に実行するコマンドを指定します。
cmd:csh-historybooleanyesの場合、!とhistory番号でコマンド入力ができます。(例:historyの結果に「3 exit」とあれば、「!3」でexitが実行できる。)
cmd:default-protocolstringopen時のデフォルトのプロトコルを指定します。デフォルトは'ftp'です。
cmd:fail-exitbooleanonの場合、コマンドが失敗したらlftpを終了します。バッチ処理などで有用です。
cmd:ls-defaultstringlsの既定の引数を指定します。
cmd:promptstringプロンプトを指定します。
ftp:list-optionsstringlistコマンドのオプションを指定します。「-a」を指定すると、隠しファイル(ドットで始まるファイル)も表示できます。
ftp:charsetstringファイル名のキャラクターセットを設定します。例えば日本語のファイル名(Windowsの場合よくあると思います。)を表示させる場合は「set ftp:charset sjis」とします。
xfer:clobberbooleanonの場合、ファイルの上書きを認めます。offの場合、ローカルにあるファイルと同じファイル名のファイルをGETすると「ファイルはすでに存在し、また xfer:clobber がセットされていません。」と表示され、上書きされません。

ちなみにboolean値は(on/off)でも(yes/no)でもOKです。

lftpコマンド一覧

よく使いそうなコマンドの一覧です。

サーバーのファイル操作
コマンド説明
pwdカレントディレクトリのパスを表示します。
cd dirdirに移動します。
ls [dir][dir]のファイル一覧を表示します。[dir]を省略すると対象はカレントディレクトリになります。
mv file1 file2file1の名前をfile2に変更します。
mkdir dirdirを作成します。-pオプションを使用すると階層で指定可能。(例:mkdir -p aa/bb)
cat filefileの内容を表示します。
more filefileの内容を表示します。catとの違いは、1画面以上はspeceキーでスクロールできます。
zmore filezipで圧縮されているfileの内容を表示します。
ローカルのファイル操作
コマンド説明
lcd dirdirに移動します。
lpwdカレントディレクトリのパスを表示します。
ファイルダウンロード
コマンド説明
get filenamefilenameをサーバーからダウンロードします。
mget filenamefilenameをサーバーからダウンロードします。getとの違いはワイルドカード等が使用できるところです。
mirrorカレントディレクトリー以下全てダウンロードします。ただし、ローカルのファイルのほうが新しい場合、上書きしません。-eオプションを使用するとサーバーにないファイルはローカルから削除されます。なお、ドットから始まるファイルをダウンロードする場合はmirrorの前に「set ftp:list-options -a」を行ってください。
ファイルアップロード
コマンド説明
put filenamefilenameをサーバーにアップロードします。
mput filenamefilenameをサーバーにアップロードします。putとの違いはワイルドカード等が使用できるところです。
mirror -Rローカルのカレントディレクトリー以下全てアップロードします。ただし、サーバーのファイルのほうが新しい場合、上書きしません。
ブックマーク
コマンド説明
bookmark [list]~/.lftp/bookmarkの中身を表示します。パスワードはXXXに置換されます。
bookmark add bkname現在の接続状態を~/.lftp/bookmarkに保存します。set bmk:save-passwords yesに設定されている場合はパスワードも保存されます。
bookmark del bknamebknameを~/.lftp/bookmarkから削除します。
bookmark edit~/.lftp/bookmarkをエディターで編集します。エディターは環境変数EDITORで指定できます。

スクリプトの例

ミラーリングを使用したダウンロード(バックアップ)のシェルスクリプトの書き方の例です。

ダウンロード例
スクリプト名download.sh
サーバー192.168.1.1
ダウンロードするファイル/home/kuma/にある全てのファイル(.bashrcのようなhiddenファイルも含む)
保存場所/home/kuma/bk/201501

download.shの中身

[paso ~]more download.sh
#!/bin/sh
USER=kuma
PASS=password
SITE=192.168.1.1
lftp <<EOF
open -u $USER,$PASS $SITE
set ftp:list-options -a
lcd /home/kuma/bk/200901
cd /home/kuma
mirror
EOF