scpコマンドはファイルやディレクトリの転送を 一度しか行えません. sftpコマンド (Secure File Transfer Program) を利用することによって, リモートホストに一定時間ログインし, ファイルの転送を何度でも行えます. sftpコマンドもscpコマンドと同様に, SSHにより暗号化された通信を行います.
リモートホスト ccz00.sfc.keio.ac.jp にユーザt00000tfがログインする例を示します. はじめてログインするホストに接続する際に, 接続の確認メッセージが表示されるので `yes' と入力します. 接続に成功するとパスワードを聞かれるので CNS のパスワードを入力し, <ENTER>を押します.
% sftp t00000tf@ccz00.sfc.keio.ac.jp <ENTER> Connecting to ccz00.sfc.keio.ac.jp... t00000tf@ccz00.sfc.keio.ac.jp's password:_ sftp> _
sftpコマンドは次のような書式で利用します.
sftp [オプション] [ログイン名]@[ホスト名]
sftpで 転送したいファイルがあるディレクトリへ移動したり, ディレクトリ内のファイルを表示させたりするには lsコマンドや cdコマンド を使用します. lsコマンドは, リモートホストのカレントディレクトリに存在する ファイルの一覧を表示します. cdコマンドは リモートホストのディレクトリの移動に利用します.
次にlsコマンドと cdコマンドの例を示します.
sftp> ls <ENTER> -rw-rw-rw- 1 t00000tf student 254 Oct 20 01:55 .cshrc drwxr-xr-x 2 t00000tf student 4096 Feb 12 12:25 bin drwxr----- 9 t00000tf student 4096 Nov 14 04:12 Mail -rwxr-xr-x 1 t00000tf student 892 Feb 12 12:25 memo.tex drwxr-xr-x 2 t00000tf student 512 Aug 11 14:31 report sftp> cd report <ENTER> sftp> ls <ENTER> -rw-r--r-- 1 t00000tf student 227 Jan 23 2002 kadai.tex -rw-r--r-- 1 t00000tf student 401 Jun 9 01:27 kadai.dvi sftp> _
リモートホストでのディレクトリ操作と同様に, llsコマンドと lcdコマンドを 利用することにより, ローカルホストのディレクトリ操作を行えます. コマンドの頭文字の `l' はLocalの略です.
llsコマンドはsftpを実行中に, ローカルホストの作業ディレクトリ内の ファイルやディレクトリの一覧を表示します.
lcdコマンドはsftpを実行中に, ローカルホストの作業ディレクトリを変更します.
次にllsコマンドと lcdコマンドの例を示します.
sftp> lls <ENTER> advertisement.tex question.eps directory/ studentList.tex english/ sftp> lcd english/<ENTER> sftp> lls <ENTER> finalexam.tex words.tex sftp> _
リモートホストに置いてあるファイルを ローカルホストに転送するには, getコマンドや mgetコマンド を利用します.
getコマンドは リモートホストの1個のファイルを ローカルホストに転送するときに利用します.
次に, kadai.tex というファイルを転送する例を示します.
sftp> get kadai.tex <ENTER> Fetching /a/fs0501a/t00000tf/report/kadai.tex to kadai.tex sftp> _
転送が終了するとプロンプトが表示されます. リモートホストに指定した名前のファイルが存在しない場合, エラーメッセージが表示されるのでファイル名を確認してください.
mgetコマンドは, リモートホストから複数のファイルを一度に転送する際に利用します. メタキャラクタ () を利用できるので, `*.tex' や `kadai?.tex' など のようにファイル名を指定することで 複数のファイルを同時に転送できます.
次に, リモートホストのカレントディレクトリのファイルを すべてローカルホストに転送する例を示します.
sftp> mget * <ENTER> Fetching /a/fs0501a/t00000tf/report/kadai.tex to kadai.tex Fetching /a/fs0501a/t00000tf/report/kadai.dvi to kadai.dvi sftp> _
ローカルホストにあるファイルを リモートホストに転送するには, putコマンドや mputコマンド を利用します.
putコマンドは ローカルホストの1個のファイルを リモートホストに転送するときに利用します. 次に, `draft.tex' というファイルをリモートホストに転送する 例を示します.
sftp> put draft.tex <ENTER> Uploading draft.tex to /a/fs0501a/t00000tf/report/draft.tex sftp> _
転送が終了するとプロンプトが表示されます. ローカルホストにファイルが存在しない場合, エラーメッセージが表示されるので ファイル名を確認してください.
mputコマンドは mgetコマンドと同様に メタキャラクタを利用できるので, `*.tex' や `kadai?.tex' など のようにファイル名を指定することで 複数のファイルを同時に転送できます.
次に, ローカルホストの作業ディレクトリにある `example' ではじまるファイルを すべてリモートホストに転送する例を示します.
sftp> mput example* <ENTER> Uploading example.tex to /a/fs0501a/t00000tf/report/example.tex Uploading example.dvi to /a/fs0501a/t00000tf/report/example.dvi sftp> _
sftpを終了する場合は exitコマンドを 実行してください.
sftp> exit <ENTER> % _