top

TOP  RSS  Login

lftp(1)

名前

lftp - 高度なファイル転送プログラム

書式

  • lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
  • lftp -f script_file
  • lftp -c commands
  • lftp --version
  • lftp --help

バージョン

この man page 文書 は lftp バージョン 3.7.5 向けのものである。

概要

lftp は、高度な ftp, http その他のプロトコルで他のホストへ接続することのできるファイル転送プログラムである。site が指定されていれば、lftp はサイトへ接続したり、open コマンドにより接続を確立したりする。

lftp は、いくつかのファイルアクセスメソッドを扱える。ftp, ftps, http, https, hftp, fish, sftp そして file である(https と ftps は、lftp が GNU TLS あるいは OpenSSL ライブラリを利用してコンパイルされた場合のみ使用可能である)。使用するメソッドは `open URL' コマンドの中で指定できる。例えば `open http://www.us.kernel.org/pub/linux' のように。hftp は ftp-over-http-proxy プロトコルである。proxy が `http://proxy[:port]' と設定されていた場合、ftp の代わりに自動的に使用される。Fish は unix アカウントへの ssh 接続を通じて動くプロトコルである。SFtp は sftp サブシステムとして ssh2 にて実装されたプロトコルである。

lftp におけるどの操作も信頼性があり、重要でないエラーは無視されながらも処理は繰り返される。もしもダウンロードが途切れた場合、その点から自動的に再び開始される。ftp サーバが REST コマンドをサポートしていなくても、lftp は最初からファイルが完全に転送されるまで、ファイルの取得を試みる。

lftp はシェルライクなコマンド文法を持ち、("&" を利用して)バックグラウンドで並行してコマンドを起動させることができる。また、() でコマンドを囲みそれらをバックグラウンドで実行することも可能である。すべてのバックグラウンドジョブは一つのプロセスで実行される。^Z (c-z) のあとに `wait' コマンド(あるいはそのエイリアス `fg')を使うことにより、フォアグラウンドジョブをバックグラウンドへ送ることもできる。起動しているジョブをリストするには、`jobs' コマンドを使う。いくつかのコマンドは、ファイルへの出力またはパイプによる他のコマンドへリダイレクトすることができる(cat, ls, ...)。コマンドは前のコマンドの終了ステータスによって、条件を付けて実行することができる(&&, ||)。

ジョブがまだ完了していない場合に lftp を終了すると、lftp はバックグラウンドで nohup モードに移行する。モデムがハングアップした時や xterm を閉じた時と同様である。

lftp は、ディレクトリツリー全体をダウンロード、あるいは更新することのできるビルトインのミラーコマンド(mirror)を持つ。サーバのディレクトリツリーへミラーリングすることもできる(mirror -R)。ミラーリングは、FXP が利用可能であればそれを利用して、二つのリモートサーバ間でディレクトリを同期することもできる。

現在のコンテキストで指定された時間にジョブを起動させる `at' コマンドや、現在接続しているサーバに対する連続的な実行を行うための `queue' コマンドなど、多くのコマンドもある。

起動時に、lftp は /etc/lftp.conf、~/.lftprc、~/.lftp/rc をそれぞれ実行する。それらのファイルに `set' コマンドによってエイリアスを設定することができる。プロトコルデバッグをする場合は、`debug' を使いデバッグを行うことができる。greeting メッセージとエラーメッセージのみ表示させる場合は、`debug 3' を使用する。

lftp は多くの設定可能な変数を持つ。`set -a' を使用することによって、全ての変数とその値を確認することができ、`set -d' によってデフォルト値を確認することができる。変数名は省略することができ、プレフィックスはあいまいにならない限り省略することができる。

lftp が OpenSSL とともにコンパイル(configure --with-openssl)されていれば、OpenSSL Toolkit で使用するための OpenSSL Project によって開発されたソフトウェアが含まれる。(http://www.openssl.org/

コマンド

! shell command

シェルやシェルコマンドを起動する。

!ls

ローカルのディレクトリをリストする。

alias [name [value]]

name をエイリアスとして定義あるいは未定義にする。value が省略されると、エイリアスが未定義にされる。省略されていなければ value のエイリアスとして定義される。引数が渡されなければ、現在のエイリアスの一覧が表示される。

alias dir ls -lF
alias less zmore

anon

ユーザ名を anonymous に設定する。デフォルトである。

at time [ -- command]

指定された時間 time まで待ってから、(任意に)指定されたコマンドを実行する。at(1) も参照すること。

bookmark [subcommand]

ブックマークを管理するコマンド。

add <name> [<loc>]
現在の場所あるいは指定されたロケーション loc を、指定された名前 name としてブックマークへ追加する
del <name>
名前が name であるブックマークを削除する
edit
ブックマークファイルを編集する
import <type>
外部のブックマークをインポートする
list
ブックマークをリストする(デフォルト)

cache [subcommand]

ローカルメモリキャッシュを操作する。以下のサブコマンドが認識される。

stat
キャッシュ状態を表示する(デフォルト)
on|off
キャッシュをオン/オフする
flush
キャッシュをフラッシュする
size lim
メモリ制限値を設定する。-1 は制限なし
expire Nx
キャッシュ期限時間を N に設定する(秒: x=s, 分: x=m, 時: x=h, 日: x=d)

cat files

リモートのファイルを標準出力へ表示する。(more, zcat, zmore も参照すること)

cd rdir

リモートのカレントディレクトリを変更する。以前のディレクトリは `-' として保存される。ディレクトリを戻るには、`cd - ' とすれば良い。それぞれのサイトの以前のディレクトリはディスクに保存されるため、lftp を再び起動させた後でも `open site; cd -' とすることができる。

chmod mode files

リモートのファイルのパーミッションマスクを変更する。mode は 8 進の値でなければならない。

close [-a]

動いていない接続を閉じる。デフォルトでは現在のサーバに対する接続のみに有効であり、全ての動いていない接続を閉じるには -a を用いる。

cls [OPTS] files...

`cls' は指定されたファイルやディレクトリの情報を得て、フォーマット(整形)オプションに基づいてその情報を表示する。`ls' と `cls' との違いは、`ls' がサーバへファイル一覧表示のフォーマットを要求するのに対して、`cls' は全ての必要な情報を得た後にそれ自身でフォーマットする。オプションについては、`help cls' を参照すること。

command cmd args...

与えられたコマンドを、エイリアスを無視して実行する。

debug [-o file] level|off

デバッグのレベルを変更あるいはオフにする。デバッグ表示をファイルへリダイレクトする場合は -o を用いる。

echo [-n] string

何をするのか考えてみよう。

eval [-f format] args...

-f が渡されなければ、単に与えられた引数をコマンドとして実行する。-f が渡されれば、引数は新たなコマンドとして変えられる。format には、普通のテキストと引数に対応した $0...$9, $@ 変数を含ませることができる。

exit [bg] [top] [kill] [code]

exit は lftp を終了し、あるいはアクティブなジョブがあればバックグラウンドへ移行する。どのジョブもアクティブでなければ、code がオペレーティングシステムへ渡され lftp の終了ステータスとなる。code が省略されると、最後のコマンドの終了コードが用いられる。

`exit bg' は cmd:move-background が偽であっても強制的にバックグラウンドへと移行する。`exit top' はトップレベルの `shell' (lftp 内部の実行コマンド)を終了させる。`exit kill' は終了する前に全てのジョブを強制的に終了させる。オプションは繋げることができる。例えば `at 8:00 -- exit top kill &' は、全てのジョブを強制終了させ、lftp を指定された時刻に終了させるものである。

fg

`wait' のエイリアスである。

find [directory]

再帰的にディレクトリ directory (デフォルトではカレントディレクトリ)のファイルの一覧を表示する。サーバが ls -R をサポートしていない場合に役立つ。このコマンドの出力をリダイレクトすることができる。

ftpcopy

昔のもの。代わりに以下を使うこと:

あるいは FXP 転送(直接的に二つの ftp サーバ間で行われる)を実行する他の組み合わせを使うこと。FXP 転送が行えない、あるいは use-fxp が偽であれば、lftp は(クライエントを介した)普通のコピーを行う。

get [-E] [-a] [-c] [-O base] rfile [-o lfile] ...

リモートファイル rfile を取得し、ローカルファイル lfile として保存する。-o が省略された場合、ファイルは rfile のパスを除いたファイル名を持つローカルファイルへ保存される。rfile (と -o lfile)を複数指定することで、複数のファイルを取得することもできる。ワイルドカードの展開は行われないため、そのためには mget を用いること。

  • -c - 続行、再取得
  • -E - 転送成功後、元のファイルを削除する
  • -a - アスキーモード(デフォルトはバイナリモード)
  • -O <base> - ファイルが置かれるべきディレクトリか URL を指定する

例:

get README
get README -o debian.README
get README README.mirrors
get README -o debian.README README.mirrors -o debian.mirrors
get README -o ftp://some.host.org/debian.README
get README -o ftp://some.host.org/debian-dir/ (最後のスラッシュは重要)

get1 [OPTS] rfile

一つのファイルを転送する。オプションは以下の通り:

  • -o <lfile> - 保存されるファイル名(デフォルト - rfile のパスを除いたファイル名)
  • -c - 続行, 再取得
  • -E - 転送成功後、元のファイルを削除する
  • -a - アスキーモード(デフォルトはバイナリモード)
  • --source-region=<from-to> - 元のファイルの特定部分を転送する
  • --target-position=<pos> - データが書き込まれる保存先のファイル中の位置

glob [-d] [-a] [-f] command patterns

与えられたメタキャラクタを含むパターンをグロブ展開し、結果を与えられたコマンドへ渡す。例: ``glob echo *''。

  • -f - プレーンファイル(デフォルト)
  • -d - ディレクトリ
  • -a - 全ての種類

help [cmd]

cmd についてのヘルプを表示する。cmd が指定されなければ、利用可能なコマンドの一覧を表示する。

jobs [-v]

動作中のジョブを一覧表示する。-v は冗長さを意味し、数回の -v を指定できる。

kill all|job_no

job_no で指定されたジョブあるいは全てのジョブを終了させる。(job_no については jobs を参照すること)

lcd ldir

ローカルのカレントディレクトリを ldir へ変更する。以前のローカルディレクトリは `-' として保存される。ディレクトリを戻るには `lcd -' とすれば良い。

lpwd

ローカルマシンのカレントディレクトリを表示する。

ls params

リモートファイルを一覧表示する。このコマンドの出力を、ファイルあるいはパイプを介する外部コマンドへリダイレクトすることができる。デフォルトではファイル一覧の出力はキャッシュされる。キャッシュされたものではなく新たに一覧を表示させる場合は、rels あるいは cache flush を使うこと。

mget [-c] [-d] [-a] [-E] [-O base] files

ワイルドカード展開を files に対して行い、選択されたファイルを取得する。

  • -c - 続行, 再取得
  • -d - ファイルと同じ名前のディレクトリを作成し、カレントディレクトリの代わりにそのディレクトリへ保存する。
  • -E - 転送成功後、元のファイルを削除する
  • -a - アスキーモードを使う(デフォルトではバイナリモード)
  • -O <base> - ファイルが置かれるべきディレクトリあるいは URL を指定する

mirror [OPTS] [source [target]]

指定された source ディレクトリとローカルの target ディレクトリを同期させる。もし target ディレクトリがスラッシュで終わっていれば、source のベース名が対象ディレクトリ名に追加される。source/target は、ディレクトリを示す URL であってもよい。

  • -c, --continue - 可能な場合同期ジョブを続行する
  • -e, --delete - リモートに存在しないファイルを削除する
  • --delete-first - 新しいファイルの転送前に古い方のファイルを削除する
  • --depth-first - ファイル転送前にディレクトリを辿る
  • -s, --allow-suid - リモートサイトに応じて suid/sgid ビットを立てる
  • --allow-chown - 所有者と所有グループをセットする
  • --ascii - アスキーモードによる転送を用いる(同時に --ignore-size が有効になる)
  • --ignore-time - ダウンロードするファイルを時刻によって判断しない
  • --ignore-size - ダウンロードするファイルをサイズによって判断しない
  • --only-missing - 存在しないファイルのみダウンロードする
  • --only-existing - target に存在するファイルのみダウンロードする
  • -n, --only-newer - 新しいファイルのみダウンロードする(-c は機能しない)
  • --no-empty-dirs - 空のディレクトリを作成しない(--depth-first が有効になる)
  • -r, --no-recursion - サブディレクトリを辿らない
  • --no-symlinks - シンボリックリンクを作成しない
  • -p, --no-perms - ファイルのパーミッションを設定しない
  • --no-umask - ファイルモードに umask を適用しない
  • -R, --reverse - 逆の同期(ファイルをアップロードする)
  • -L, --dereference - シンボリックリンクをファイルとしてダウンロードする
  • -N, --newer-than=SPEC - 指定された時間よりも新しいファイルのみダウンロードする
  • --on-change=CMD - ファイル変更があった場合に指定されたコマンドを実行する
  • --older-than=SPEC - 指定された時間よりも古いファイルのみダウンロードする
  • --size-range=RANGE - 指定されたサイズに含まれるファイルのみダウンロードする
  • -P, --parallel[=N] - N 個のファイルを並行してダウンロードする
  • --use-pget[-n=N] - それぞれのファイルの転送に pget を用いる
  • --loop - 変更が見付からなくなるまでループする
  • -i RX, --include RX - 操作対象のファイルを正規表現で指定する
  • -x RX, --exclude RX - 操作対象外のファイルを正規表現で指定する
  • -I GP, --include-glob GP - 操作対象のファイルをグロブパターンで指定する
  • -X GP, --exclude-glob GP - 操作対象外のファイルをグロブパターンで指定する
  • -v, --verbose[=level] - 冗長な出力を行う
  • --log=FILE - 実行されるコマンドを FILE に書き込む
  • --script=FILE - 実行されるコマンドを FILE に書き込むが、実際には実行しない
  • --just-print, --dry-run --script=- と同じ
  • --use-cache - キャッシュされたディレクトリ一覧を使用する
  • --Remove-source-files - 転送後にファイルを削除する(注意して使用すること)
  • -a - --allow-chown --allow-suid --no-umask と同じ

-R を使用した場合、最初の引数として指定したディレクトリがローカルとなり、二つ目の引数がリモートとなる。二つ目のディレクトリが省略された場合、最初のディレクトリ名が用いられる。両方とも省略された場合、現在のローカル・リモートディレクトリが用いられる。もし target ディレクトリが(ルートディレクトリ以外の)スラッシュで終わっていれば、source ディレクトリのベース名が追加される。

RX は egrep(1) で使われるような拡張正規表現である。

GP は `*.zip' のようなグロブパターンである。

include, exclude オプションは複数回指定できる。つまり、ファイルやディレクトリが include にマッチしその後の exclude にマッチしない場合、あるいは最初のチェックが exclude であってどの exclude にもマッチしない場合に、同期が行われる。ディレクトリはスラッシュが追加されてマッチングが行われる。

リモートサーバへアップロードを行う場合、シンボリックリンクは作成されないことに注意すること。ftp プロトコルでは不可能だからである。シンボリックリンクが指し示すファイルをアップロードする場合、`mirror -RL' コマンドを使用する(シンボリックリンクをファイルとして扱う)。

オプション --newer-than には、ファイルあるいは at(1) コマンドで使用されるような時間、例えば `now-7days' や `week ago' など、の指定が可能である。ファイルを指定した場合、そのファイルの変更時刻が用いられる。

冗長さの程度は --verbose=lebel オプションや複数の -v オプション(例えば -vvv)を使用して選択できる。レベルは以下の通り:

  • 0 - 出力なし(デフォルト)
  • 1 - 動作を出力
  • 2 - 上記に加えて削除されていないファイル名を出力(-e が指定されていない場合)
  • 3 - 上記に加えて同期されたディレクトリ名を出力

--only-newer を指定すると、ファイルサイズの比較をせず、サイズが異なっていても新しいファイルのみアップロード/ダウンロードを行う。デフォルトでは古いファイルは転送され新しいファイルと置き換えられる。

ディレクトリの代わりに URL を指定した場合、二つのサーバ間で同期を行うことができる。利用可能なら、FTP サーバ間の転送には FXP が自動的に用いられる。

いくつかの FTP サーバは、ドットファイル(.htaccess など)をデフォルトで隠し、LIST コマンドを -a オプションとともに使用した場合のみ表示する。その場合には、`set list-options -a' を使用するとよい。

mkdir [-p] dir(s)

リモートディレクトリを作成する。-p が用いられると、パスの構成部分を含めて作成する。

module module [ args ]

指定されたモジュールを dlopen(3) 関数を用いてロードする。モジュール名にスラッシュが含まれていなければ、module:path 変数によって指定されたディレクトリ以下を検索する。引数は module_init 関数に渡される。技術的な詳細については README.modules を参照すること。

more files

`cat files | more' と同様である。PAGER がセットされていれば、フィルタとして使用される。(cat, zcat, zmore も参照すること)

mput [-c] [-d] [-a] [-E] [-O base] files

files をワイルドカード展開しアップロードする。デフォルトではローカルでのベース名をリモートのベース名として用いる。これは `-d' オプションによって変更できる。

  • -c - 継続、reput
  • -d - カレントディレクトリではなく、ファイル名と同じ名前のディレクトリを作成してそこにアップロードする
  • -E - 転送成功後にソースファイルを削除する(危険)
  • -a - アスキーモードを使用する(バイナリモードがデフォルト)
  • -O <base> - ファイルをアップロードするベースディレクトリや URL を指定する

mrm file(s)

`glob rm' と同様である。file(s) をワイルドカード展開し削除する。

mv file1 file2

file1 の名前を file2 に変更する。

nlist [args]

リモートのファイル名を一覧表示する。

open [-e cmd] [-u user[,pass]] [-p port] host|url

FTP サーバを選択する。

pget [OPTS] rfile [-o lfile]

指定されたファイルを複数の接続を用いて取得する。転送時間を短くすることができるが、回線やサーバを使用する他のユーザに影響を及ぼしうる。どうしても早く転送を行う必要がある場合にのみ使用すること。オプション:

  • -c - 転送を継続する。lfile.lftp-pget-status ファイルが必要。
  • -n maxconn - 接続の最大数を設定(デフォルトは pget:default-n により指定される)

put [-E] [-a] [-c] [-O base] lfile [-o rfile]

lfile をリモートへ rfile という名前でアップロードする。-o が省略された場合、lfile のベース名がリモートの名前として用いられる。ワイルドカード展開は行われない。ワイルドカード展開が必要な場合は、mput を使用すること。

  • -o <rfile> - リモートファイル名を指定する(デフォルト - lfile のベース名)
  • -c - 継続、reput。リモートファイルの上書きを行う権限が必要。
  • -E - 転送成功後にソースファイルを削除する(危険)
  • -a - アスキーモード(バイナリがデフォルト)
  • -O <base> - ファイルが置かれるベースディレクトリや URL を指定する

pwd [-p]

現在のリモート URL を表示する。`-p' オプションを使用すると URL 中にパスワードを表示する。

queue [-n num ] cmd

与えられたコマンドを連続して実行を行うキューに追加する。各サイトごとにキューは保持される。`-n' オプションを使用すると、コマンドはキューの指定された位置に追加される。`cd' や `lcd' コマンドは lftp に混乱をもたらすため、キューに追加しないこと。代わりに `queue' コマンドの前に cd/lcd を実行することによって、コマンドが実行されるべき位置を任意に指定できる。`queue wait <jobno>' によって既に動いているジョブを待つことができるが、ジョブはキューの初めではない場合でも続行される。

`queue stop' はキューを停止し新たなコマンドを実行しないが、既に動いているジョブは続行される。空の停止されたキューの作成に `queue stop' を使用することができる。`queue start' はキューの実行を再開する。lftp を exit すると、停止されたキューは自動的に開始される。

引数なしの `queue' は停止されたキューを作成するとともにキューの状態を表示する。

queue --delete|-d [index or wildcard expression]

一つかそれ以上の項目をキューから削除する。引数が渡されなければ、キューの最後に位置するものが除かれる。

queue --move|-m <index or wildcard expression> [index]

指定された項目を、指定されたキュー位置の直前に移動させる。移動先が指定されなければ、キューの最後に移動させる。

  • -q 何も出力しない。
  • -v 冗長な出力。
  • -Q 再キューとして可能な形式で出力する。--delete を行う場合に役立つ。
> get file &
[1] get file
> queue wait 1
> queue get another_file
> cd a_directory
> queue get yet_another_file
queue -d 3            キュー中の 3 番目の項目を削除する。
queue -m 6 4          キュー中の 6 番目の項目を 4 番目の項目の前に移動させる。
queue -m "get*zip" 1  "get*zip" にマッチする全てのコマンドをキューの先頭へ移動させる(項目の順番は保持される)。
queue -d "get*zip"    "get*zip" にマッチする全てのコマンドを削除する。

quote cmd

FTP で使用される場合 - コマンドは解釈されずに送られる。注意して使うこと - リモートの状態が把握できなくなり、再接続を招くおそれがある。quote により送られるコマンドは固定であるため、リモートの状態の変更を確認することはできず、どの時点においても再接続によるリセットが起こりうる。

HTTP で使用される場合 - HTTP に特定の動作を行う。書式: "quote <command> [<args>]"。command は "set-cookie" あるいは "post" を取りうる。

open http://www.site.net
quote set-cookie "variable=value; othervar=othervalue"
set http:post-content-type application/x-www-form-urlencoded
quote post /cgi-bin/script.cgi "var=value&othervar=othervalue" > local_file

FISH で使用する場合 - コマンドは解釈されずに送られる。これは任意のコマンドをサーバ上で実行する場合に使われる。コマンドは入力を受け取ったり行の始まりに ### を出力するものであってはならない。それが行われれば、プロトコルは同調することが不可能になる。

open fish://server
quote find -name \*.zip

reget rfile [-o lfile]

`get -c' と同様である。

rels [args]

`ls' と同様であるが、キャッシュを無視する。

renlist [args]

`nlist' と同様であるが、キャッシュを無視する。

repeat [-c <count>] [[-d] delay] [command]

command を繰り返す。それぞれの間隔として delay が挿入され、デフォルトは 1 秒である。`-c' オプションによって繰り返す数を制限する。`--while-ok' オプションはコマンドが非ゼロの終了コードを返した時点でループを終える。`--until-ok' はゼロの終了コードを返した時点で終える。

例:

repeat at tomorrow -- mirror
repeat 1d mirror

reput lfile [-o rfile]

`put -c' と同様である。

rm [-r] [-f] files

リモートのファイルを削除する。ワイルドカード展開は行われない。そのためには mrm を用いること。-r はディレクトリを再帰的に下り削除を行う。間違えるとファイルが失われるので注意すること。-f はエラー表示を抑止する。

rmdir dir(s)

リモートのディレクトリを削除する。

scache [session]

キャッシュされたセッションを表示あるいは指定されたセッションへ切り替える。

set [var [val]]

変数に与えられた値を設定する。値が省略された場合、変数は未定義にされる。変数名は "name/closure" の形式を持ち、closure は正確な名称を指定する。詳細は下記を参照すること。set が変数名なしで呼ばれた場合、変更された設定のみが表示される。その挙動はオプションによって変更できる:

  • -a デフォルトの値を含む全ての設定を表示する。
  • -d 現在の値ではなくデフォルトの値のみ表示する。

site site_cmd

サイトのコマンド site_cmd を実行し結果を表示する。出力はリダイレクトすることができる。

sleep interval

与えられた時間 interval のスリープを行う。interval はデフォルトで秒数で表されるが、'm', 'h', 'd' の接尾辞によってそれぞれ分、時間、日数を表すことができる。at も参照すること。

--stub--


リンク

Last modified:2009/06/01 14:24:37

moG

0.21678