【SSH】sftpコマンドでファイルを転送する方法

サムネイル Linux

今回はLinuxのsftpコマンドでSSHでファイル転送をする方法を解説します。

ファイル転送にはscpというコマンドもあるみたいですが、調べてもよくわからなかったので僕はsftpを使っています。多分こっちの方がわかりやすいし使いやすい。

 

スポンサーリンク

sftpコマンド

sftpコマンドは簡単にいうとFTPでのファイル転送をSSHでやっている感じです。

FilezillaなどのFTPソフトを使うより、ターミナルからsftpコマンドで転送した方が早いですね。

 

なお、sftpで接続するとSSHで接続している状態になります。なので別途SSHで接続したりする必要はありません。sftpで一発です。

 

sftpで接続する方法

sftpコマンドでの接続は以下の通り。初期ドメインはサーバーIDでも同じです。

$ sftp サーバーアカウント名@初期ドメイン

 

エンターを押すとパスワードを聞かれるので入力します。何も表示されませんが、きちんと入力できているので大丈夫です。

サーバーアカウント名@初期ドメイン's password: 

 

sftp>と表示されたら成功です。

sftp接続

アカウント名や初期ドメイン(サーバーID)はサーバーのコントロールパネルから確認できます。

例えばさくらのレンタルサーバーなら、ログインして左上の「お客様情報」から確認できます。

さくらサーバーコンパネ

 

SSH接続中でもpwd,ls,cdといったコマンドが使えるので、ディレクトリの把握や階層の移動に使いましょう。touchmkdirで新しくファイルやフォルダを作ることも可能です。

 

sftpでローカルからリモートに転送

sftpでファイルを転送

sample.txt

試しにローカルにある「sample.txt」をsftpでサーバーに転送します。

ローカル→サーバーへの転送はputを使います。

sftp> put ファイル名

なお、転送したいファイルまでのパスは、ファイルをターミナルにドラッグ&ドロップすれば自動で表示されます(これめっちゃ便利)

 

今回はsample.txtを転送したいので、以下のように書きましょう。

sftp> put path/to/sample.txt

 

転送したらlsコマンドで転送できているか確認します。

lsで確認

きちんと転送されていますね。

 

sftpでフォルダを転送

フォルダを転送する場合は-rオプションを付けます。

sftp> put -r フォルダ名

-r:(recursive)再帰的な処理をするオプション。

再帰的な処理とは同じ処理を繰り返し行うこと。フォルダを転送する際は中にあるファイルを転送→次のファイルを転送→次のファイルを…と同じ処理を何度も繰り返すため、-rオプションをつける必要がある。

 

testフォルダの画像

試しにtestフォルダを転送してみます。

sftp> put -r path/to/test

 

転送できたらlsコマンドで確認してみましょう。

lsで確認

転送できていますね。

なお、同じ名前のファイル(フォルダ)がある場合は強制的に上書きされるので注意しましょう。

 

sftpでリモートからローカルに転送

逆にサーバーにあるファイルをローカルに転送するにはgetを使います。

sftp> get ファイル名

 

フォルダを転送する場合はやっぱり-rオプションを付けます。

sftp> get -r フォルダ名

 

先ほどサーバーに転送した「sample.txt」と「test」フォルダを、今度はサーバーからローカルに転送してみます。

sftp> get sample.txt
sftp> get -r test

 

なお、サーバーからローカルに転送してきたファイルはホームディレクトリに置かれます。

確認するとファイルやフォルダがあるはずです。

転送確認

 

sftp接続を終了する

sftp接続を終了するにはquit,exit,byeのいずれかを使います。どれでも同じなので好きなコマンドを使いましょう。

sftp> quit

 

転送が終わったら必ず終了のコマンドを打って終わるようにしましょう。

 

sftpコマンド早見表

接続
sftp サーバーアカウント名@初期ドメイン
ファイルをリモート(サーバー)へ転送
put ファイル名
フォルダをリモート(サーバー)へ転送
put -r フォルダ名
ファイルをローカルへ転送
get ファイル名
フォルダをローカルへ転送
get -r フォルダ名
終了
quit, exit, byeのいずれか

 

まとめ

sftpコマンドを使ってSSHで接続した状態でファイルの転送ができます。

ただし、サイズが大きいファイルを一気に転送すると結構時間がかかるのでその辺は注意してください。