印刷用チートシートをダウンロードは こちらをクリック

SFTPは、安全な安全なファイル転送プロトコールであるSSH(Secure Shell)を基盤としており、SSHはUnix/Linuxサーバー間の標準的な接続方法です。クライアント・サーバーのアーキテクチャで動作しており、つまりクライアントがサーバーへ接続してファイルをアップロード、またはダウンロードするという意味です。さらに、SFTPクライアントでは、ファイルの一覧表示や削除、ディレクトリの作成、ファイルの所有者やパーミッションの変更も可能です。

SFTPセッションを開始するには、パスワード認証のオプションを使うか、またはパスワードなしのSFTPログインのためにSSHキーを作成することです。

SFTPへの接続は、以下のようにいくつかの方法があります:

  • CLI(Command Line Interface:最近のOS(オペレーティングシステム)には、SFTP CLI プログラムが搭載されており、ユーザーはテキストコマンドを入力して SFTP サーバーと通信することができる
  • GUI(Graphical User Interface:使い勝手が良いグラフィックスインターフェイスによるファイルのリスト、ダウンロード、アップロードの操作が可能になり、またマウス、トラップパットのような入力デバイスによるドラッグ&ドロップでファイルアップロードやダウンロードが出来る。最も有名なSFTPのGUIクライアントとしては、FilezillaとCyberduckがあります。
  • プログラミングライブラリ (Programming libraries):プログラマがコード内でSFTPサーバとやりとりするための、多数のプログラミング言語用の標準的なプログラミングライブラリが多くあります。

今回は、CLIを中心にお話します。

はじめに

コマンドラインを起動するには、【ターミナルアプリ】(Windows では [cmd]、Mac および Linux では [Terminal])を開き、sftp user@host/remote-dirと入力します(プレースホルダを実際のユーザ名、sftp ホスト名、 およびリモートディレクトリに置き換えてください)。その後、選択したパスワードを入力するか、秘密鍵/公開鍵の認証オプションを使ってログインします。

一度入力しておくと、ここからは簡単です。一度でも各コマンドの意味を理解すれば、コマンドラインの使い方はとても簡単です。本記事では、重要で便利なコマンドをみていきましょう。

:いくつかのコマンドは引数を持っています(それが何をするのかについてもお話しますのでご安心下さい)。オプションの引数(つまり、指定無しで構わない)は、<かぎ括弧> で囲まれています。

ファイルの一覧表示

Command(コマンド): ls <options> <path>

ls は、リモートサーバー上のカレントディレクトリの内容を一覧表示します。

引数なしで ls を使用した場合、カレントディレクトリ内で見つかったすべてのファイルが整列無しで表示されます。カレントディレクトリを変更するには,以下のように cd コマンドを使います。

lsコマンドを使用する場合、以下のように2つのオプション引数が利用可能です:

  1. <options> - <options> 引数には、以下のオプションのいずれか、またはその組み合わせを指定します。例えば、コマンド `-alt` は許容範囲内です。
  • -1:ファイルリストを1列で表示する
  • -a:すべてのファイルを表示 - 非表示ファイル(ドットでで始まる)も含む
  • -h:人にわかりやすいファイルサイズで表示する
  • -l:長いリスト形式で、ファイルサイズやパーミッションなどの追加ファイル情報を含む

以下のオプションを使って、リスト内のファイルの順序を変更します:

  • -S:ファイルサイズでリストを並べ替える
  • -t:最終更新時刻でリストを並べ替える
  • -r:逆順に並べ替える

2. <path>:ls コマンドにpath引数を渡すと、指定したリモートパス内のファイル一覧を表示することができ、以下の例に、その方法が示されています。 ls -l コマンドを使うと、次のようにディレクトリ・ファイル一覧が表示されるはずです:

sftp> ls -l /outgoing-invoices
-rwxr--r--   1        -        -    21451 Nov 24 08:28 inv-UIf2IS.json
-rwxr--r--   1        -        -    69070 Nov 22 09:12 inv-UPrGAT.json
-rwxr--r--   1        -        -    15714 Jul 14 15:18 inv-v5rg8c.j

: ユーザのパソコン内のファイルを一覧表示するには、 sftp コンソールでlsの代わりにllsを使います。

ディレクトリの切り替え

コマンド:cd path

リモートサーバー上のあるディレクトリから別のディレクトリに切り替えるには、 cd を使います。

完全な絶対パスをディレクトリに切り替えるには、パスの前に/を付ける事でディレクトリのプール/絶対パスに切り替えます。相対パス(カレントディレクトリの中に存在するディレクトリ)に切り替えるには、単にその名前を入力するだけです。

例:

sftp> cd outgoing-invoices

コマンド:lcd path

lcd は 、ユーザのパソコンのアクティブディレクトリの変更以外は、cdとおなじです。

例:

sftp> lcd /Users/john/Documents/invoices

ファイルのダウンロードとアップロード

コマンド:get remote-file <local-dir>

Get は、リモートサーバーからローカルコンピューターに単一または複数のファイルをダウンロードします。getコマンドには以下のように2つの引数があります:

  1. <remote-file>:ダウンロードするリモートファイルへのパス。1つのコマンドで複数のファイルをダウンロードするには、remote-file引数にワイルドカード(*)を追加する。この引数は必須。
  2. <local-dir>:ダウンロードしたファイルが置かれるユーザのパソコンのターゲットディレクトリ。指定無しの場合、ファイルは自動的に現在のローカルディレクトリにダウンロードされる。この引数は省略可能。

例:

sftp> get inv-UIf2IS.json
Fetching /outgoing-invoices/inv-UIf2IS.json to inv-UIf2IS.json
/inv-UIf2IS.json                                                                                                                                          100% 21451     9.1KB/s   00:00   

次の例では、ワイルドカードを使用して、ファイル名がinvで始まるすべてのjsonファイルをダウンロードします:

sftp> get inv*.json

コマンド:put local-file <remote-path>

ローカルコンピュータからリモートホストに単一または複数のファイルをアップロードするには、putを使います。putコマンドには以下の2つの引数を追加することができます:

  1. local-file:アップロードするローカルファイルへのパス。1つのコマンドで複数のファイルをアップロードする場合は、ワイルドカード (*) を使う。
  2. <remote path> :リモートサーバー上にアップロードされたファイルを配置するターゲットディレクトリ。指定無しの場合、ファイルは自動的に現在のリモート ディレクトリにアップロードされる。

例:

sftp> put inv-jKv72b.json /outgoing-invoices/
Uploading inv-jKv72b.json to /outgoing-invoices/inv-jKv72b.json
inv-jKv72b.json                                                                                                                                           100% 34596     9.0KB/s   00:00 
SFTP To Go with maximum security and reliability
SFTP To Go offers managed SFTP/FTPS/S3 as a service - maximum reliability, security, availability, with 1 minute setup. Great for companies of any size, any scale.
Try SFTP To Go for free!

現在の作業ディレクトリのチェック

コマンド:pwd

このコマンドは、リモートホストの現在の作業ディレクトリパスを表示します。

例:

sftp> lpwd
Local working directory: /Users/john/Documents/invoices

コマンド:lpwd

lpwd は、ローカルコンピュータにおける現在の作業ディレクトリを表示します。

例:

sftp> lpwd
Local working directory: /Users/john/Documents/invoices

ディレクトリの作成・削除

コマンド:mkdir remote-path

リモートマシンに新しいディレクトリを作成します。

例:

sftp> mkdir outgoing-invoices

コマンド: rmdir remote-path

リモートホスト上の空のディレクトリを削除します。ディレクトリが空でない場合は、エラーメッセージが表示されます。

例:

sftp> rmdir dummy-dir

ファイルの削除

コマンド:rm remote-path

リモートホスト上の単一または複数のファイルを削除します。getコマンドと同様にワイルドカード(*)も使えます。

例:

sftp> rm inv-jKv72b.json
Removing /outgoing-invoices/inv-jKv72b.json

解除

コマンド:quitまたはbye

SFTP サーバーのファイル操作が終わったら、接続を閉じて、SFTP CLI プログラムを終了します。

sftp> quit

簡単でしょ?

このガイドで、よく使われるSFTPコマンドがいかに簡単かとお分かり頂けたと思いますので、ぜひコマンドラインインターフェースをお試しいただけると幸いです。

印刷用チートシートをダウンロードする, こちらをクリック