SFC CNS GUIDE 2004

6.3 sftpコマンドを使ったファイルの転送

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 [オプション] [ログイン名]@[ホスト名]

6.3.1 sftpでのディレクトリ操作

6.3.1.1 リモートホストの操作

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> _

6.3.1.2 ローカルホストの操作

リモートホストでのディレクトリ操作と同様に, 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> _

6.3.2 リモートホストからローカルホストへのファイルの転送

リモートホストに置いてあるファイルを ローカルホストに転送するには, getコマンドや mgetコマンド を利用します.

6.3.2.1 1つのファイル転送

getコマンドは リモートホストの1個のファイルを ローカルホストに転送するときに利用します.

次に, kadai.tex というファイルを転送する例を示します.

sftp> get kadai.tex <ENTER>
Fetching /a/fs0501a/t00000tf/report/kadai.tex to kadai.tex
sftp> _

転送が終了するとプロンプトが表示されます. リモートホストに指定した名前のファイルが存在しない場合, エラーメッセージが表示されるのでファイル名を確認してください.

6.3.2.2 複数のファイルの転送

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> _
注意 getコマンドや mgetコマンド は,ローカルホストの作業ディレクトリに 転送しようとしているファイルと同じ名前のファイルがある場合, それを警告なしに上書きします. あらかじめ, ローカルホストの作業ディレクトリには 転送するファイルと同じ名前のファイルがないことを 確認してください.

6.3.3 ローカルホストからリモートホストへのファイル転送

ローカルホストにあるファイルを リモートホストに転送するには, putコマンドや mputコマンド を利用します.

6.3.3.1 1つのファイル転送

putコマンドは ローカルホストの1個のファイルを リモートホストに転送するときに利用します. 次に, `draft.tex' というファイルをリモートホストに転送する 例を示します.

sftp> put draft.tex <ENTER>
Uploading draft.tex to /a/fs0501a/t00000tf/report/draft.tex
sftp> _

転送が終了するとプロンプトが表示されます. ローカルホストにファイルが存在しない場合, エラーメッセージが表示されるので ファイル名を確認してください.

6.3.3.2 複数のファイルの転送

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> _
注意 putコマンドや mputコマンド は, リモートホストのカレントディレクトリに 転送しようとしているファイルと 同じ名前のファイルがある場合, 警告なしに上書きします. あらかじめリモートホストのカレントディレクトリに 同じ名前のファイルがないことを確認してください.

6.3.4 sftpコマンドの終了

sftpを終了する場合は exitコマンドを 実行してください.

sftp> exit <ENTER>
% _
Valid CSS! Valid HTML 4.01!