知っておくとちょっと便利!sftp コマンドを使ったファイル転送

今号では、sftp コマンドを使ったファイル転送の方法について説明します!

sftp とは

sftp とは SSH File Transfer Protocol の略であり、暗号化された通信によって安全にファイルを送受信することができる仕組みです。

以前は ftp によるファイルの送受信が主流でしたが、通信を暗号化する仕組みがないため、内容が盗聴される可能性がありました。
そこで、すべてのデータを暗号化して送信することができる sftp が使用されることになりました。

主な用途としては、システム間でのファイルの送受信や、Web サーバへ各コンテンツ (html、css、画像ファイル) のアップロードなどがあります。

なお、今回は Linux や Windows 上のターミナルで sftp コマンドを使う前提で説明します。

基本の書式

  • リモートサーバへ接続
    sftp ユーザ名@ホスト名の書式で実行します。
    例:
    $ sftp ruser@172.30.10.10
    ruser@172.30.10.10's password:
    Connected to 172.30.10.10.
    sftp>

    ※パスワード認証の場合、リモートユーザのパスワードが求められます。

  • リモートサーバから切断
    exit もしくは bye を実行します。
    例:
    sftp> exit
    
  • 現在のディレクトリ (リモート側) を表示
    pwd コマンドを実行します。
    例:
    sftp> pwd
    Remote working directory: /home/ruser
    
  • 現在のディレクトリ (ローカル側) を表示
    lpwd コマンドを実行します。
    例:
    sftp> lpwd
    Local working directory: /home/luser
    
  • ファイル一覧 (リモート側) を表示
    ls を実行します。
    例:
    sftp> ls
    1.log       2.log       3.log       dir1        dir2        ruser-file
    

    -l オプションを付けると、各ファイルやディレクトリの詳細を表示します。

    sftp> ls -l
    -rw-rw-r--    1 ruser    ruser           0 Nov 17 01:04 1.log
    -rw-rw-r--    1 ruser    ruser           0 Nov 17 01:04 2.log
    -rw-rw-r--    1 ruser    ruser           0 Nov 17 01:04 3.log
    drwxrwxr-x    2 ruser    ruser           6 Nov 17 01:06 dir1
    drwxrwxr-x    2 ruser    ruser           6 Nov 17 01:06 dir2
    -rw-rw-r--    1 ruser    ruser           0 Nov 17 01:04 ruser-file
    
  • ファイル一覧 (ローカル側) を表示
    lls を実行します。
    例:
    sftp> lls
    1l.log  2l.log  3l.log  local-dir  luser-file
    

    -l オプションを付けると、各ファイルやディレクトリの詳細を表示します。

    sftp> lls -l
    total 0
    -rw-r--r--. 1 luser luser 0 Nov 17 01:05 1l.log
    -rw-r--r--. 1 luser luser 0 Nov 17 01:05 2l.log
    -rw-r--r--. 1 luser luser 0 Nov 17 01:05 3l.log
    drwxr-xr-x. 2 luser luser 6 Nov 17 01:07 local-dir
    -rw-r--r--. 1 luser luser 0 Nov 17 01:05 luser-file
    
  • ディレクトリ (リモート側) を移動
    cd ディレクトリ名の書式で実行します。
    例:
    sftp> cd dir1
    
  • ディレクトリ (ローカル側) を移動
    lcd ディレクトリ名の書式で実行します。
    例:
    sftp> lcd local-dir
    

続いて、一番重要なファイル転送についてのコマンドです。

  • ファイルのダウンロード (リモート→ローカル)
    get リモート側のファイル名の書式で実行します。
    例:
    sftp> get ruser-file
    Fetching /home/ruser/ruser-file to ruser-file
    sftp> lls
    1l.log  2l.log  3l.log  local-dir  luser-file  ruser-file
    

    リモート側のファイル名の後に任意のファイル名を付けると、そのファイル名で保存されます。

    sftp> get ruser-file ruser-file.bkp
    Fetching /home/ruser/ruser-file to ruser-file.bkp
    sftp> lls
    1l.log  2l.log  3l.log  local-dir  luser-file  ruser-file.bkp
    
  • ファイルのアップロード (ローカル→リモート)
    put ローカル側のファイル名の書式で実行します。
    例:
    sftp> put luser-file
    Uploading luser-file to /home/ruser/luser-file
    luser-file                                                        100%    0     0.0KB/s   00:00
    sftp> ls
    1.log  2.log  3.log  dir1   dir2  luser-file  ruser-file
    

    リモート側のファイル名の後に任意のファイル名を付けると、そのファイル名で保存されます。

    sftp> put luser-file luser-file.bkp
    Uploading luser-file to /home/ruser/luser-file.bkp
    luser-file                                                        100%    0     0.0KB/s   00:00
    sftp> ls
    1.log   2.log   3.log   dir1  dir2   luser-file.bkp
    
  • 複数ファイルの一括ダウンロード (リモート→ローカル)
    mget リモート側のファイル名パターンの書式で実行します。
    例:
    sftp> mget *.log
    Fetching /home/ruser/1.log to 1.log
    Fetching /home/ruser/2.log to 2.log
    Fetching /home/ruser/3.log to 3.log
    sftp> lls *.log
    1.log  2.log  3.log
    
  • 複数ファイルの一括アップロード (ローカル→リモート)
    mput ローカル側のファイル名パターンの書式で実行します。
    例:
    sftp> mput *.log
    Uploading 1l.log to /home/ruser/1l.log
    1l.log                                                            100%    0     0.0KB/s   00:00
    Uploading 2l.log to /home/ruser/2l.log
    2l.log                                                            100%    0     0.0KB/s   00:00
    Uploading 3l.log to /home/ruser/3l.log
    3l.log                                                            100%    0     0.0KB/s   00:00
    sftp> ls *.log
    1l.log   2l.log   3l.log
    

sftp コマンドのオプション

sftp コマンドの基本的なオプションをご説明します。
※すべてのオプションはご紹介せず、よく使用されると考えられるものを抜粋しています。

  • -i 秘密鍵のファイル
    公開鍵認証で接続する場合、-i の後に使用する秘密鍵のファイルを指定します。
    $ sftp -i ~/.ssh/id_rsa ruser@172.30.10.10
    
  • -P ポート番号
    SSH/SFTP が 22番ポート (デフォルト) 以外で動作している場合、該当するポート番号を指定します。
    $ sftp -P 10022 ruser@172.30.10.10
    
  • -v
    接続時の詳細なデバッグ情報を表示します。
    なお、このオプションには 3段階あり、-vv にするとさらに詳細なデバッグ情報が、-vvv にすると最も詳細なデバッグ情報が表示されます。
    $ sftp -v ruser@172.30.10.10
    

次号について

次号では、sftp と同じくファイル転送を担う rsync についてご紹介します!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です