はじめに
SFTP(Safe File Transfer Protocol)は、リモートシステム間でファイルを安全に転送する方法としてSSHとともに含まれています。また、ユーザーは、ファイルやディレクトリの管理やファイルのアクセス許可の設定など、リモートサーバーで基本的な管理タスクを実行できます。
このチュートリアルでは、SFTPを使用して、ターミナルインターフェイスを使用してローカルシステムとリモートシステム間でファイルを転送する方法を示します。

前提条件
- SSH公開鍵ペアを使用して接続されたローカルシステムとリモートサーバーへのアクセス。
- インターネット接続が機能しています。
- ターミナルウィンドウへのアクセス。
SFTPを使用して接続する方法
SFTPは、SSHネットワークプロトコルを使用してシステム間の安全な接続を確立します。これにより、公開SSHキーのコピーがある任意のシステムに接続できます。
SFTPを使用した別のシステムへの接続は、SSHを使用した接続と同じコマンド構文に従います。このコマンドでは、アクセスするシステムのユーザー名とリモートホスト名またはIPアドレスを指定する必要があります。
sftp [username]@[remote hostname or IP address]
以下の例では、IPアドレスが 192.168.100.5のシステムに接続しています。 フェニックスナップを使用する ユーザー名:
sftp [email protected]

現在の接続を終了するには、次を使用します:
exit
SFTPを使用してファイルを転送する方法
SFTPを使用すると、リモートサーバーからローカルシステムにファイルを転送したり、その逆を行ったりすることができます。
リモートファイルをローカルシステムに転送する
get
を使用します SFTPインターフェースでコマンドを実行して、リモートサーバーからローカルシステムにファイルを転送します。
get [path to file]
たとえば、 example_document.txtというファイルを転送するには リモートシステムのホームから ローカルシステムへのディレクトリ、使用:
get example_document.txt

デフォルトでは、SFTPはファイルをローカルシステムのホームに転送します ディレクトリ。ファイルを別のディレクトリに転送するには、ディレクトリへのパスを get
の最後に追加します コマンド:
get example_document.txt Downloads

ローカルシステムでファイル名を変更するには、 get
の最後に新しいファイル名を追加します 指図。
get example_document.txt sample01.txt

上記の例では、 get
コマンドはexample_document.txtをフェッチします ファイルを作成し、 sample01.txtとして保存します ローカルシステム上。
SFTPでは、 -r
を使用して、リモートシステムからディレクトリ全体を転送することもできます。 フラグ、ディレクトリ内のすべてのファイルの再帰転送を示します:
get -r Example_Directory

-P
を追加します get
へのフラグ 権限とアクセス時間を維持しながらファイルまたはディレクトリを転送するコマンド:
get -Pr Example_Directory
ls
を使用します ローカルシステムへの転送を確認するコマンド:
ls -l

ローカルファイルをリモートサーバーに転送する
ローカルシステムからリモートサーバーにファイルを転送するには、 put
を使用します 指図。 put
コマンドは、 get
と同じ構文とオプションを使用します コマンド。
put [path to file]
たとえば、 example01.txtを転送するには リモートサーバーにファイルを送信するには、次を使用します:
put example01.txt

ファイルをリモートサーバー上の特定のディレクトリに転送するには、ディレクトリへのパスを put
の最後に追加します コマンド。
put example01.txt Example_Directory

put
の最後に新しいファイル名を追加する コマンドは、リモートサーバー上で転送されたファイルの名前を変更します。
put example01.txt text_sample.txt

ディレクトリ全体を転送するには、 -r
が必要です フラグ。
put -r Test_Directory

-P
を追加します put
へのフラグ ファイルのアクセス許可を保持するコマンド:
put -Pr Test_Directory
ls
を使用して、ファイル転送を確認します リモートシステムのコマンド:

SFTPを使用したファイルのメンテナンス
SFTPは基本的なファイルメンテナンスをサポートしています。たとえば、SFTPを使用して、リモートシステムのファイルとディレクトリのアクセス許可を変更します。
chown
コマンドは、chmodコマンドと同様にファイルの所有権を変更します:
chown [user ID] [path to file]
chmod
とは異なり コマンド、 chown
ユーザーIDのみを受け入れ、ユーザー名は受け入れません。 SFTPインターフェースを使用してリモートサーバーのUIDを見つけるには、 / etc / passwdを転送してアクセスする必要があります。 ファイル:
get /etc/passwd
!less passwd
各ユーザーのUIDは、コロンで区切られた3番目の列にあります。

chmod
コマンドは標準シェルと同じように機能します:
chmod [permission] [path to file]
もう1つのオプションは、 chgrp
を使用してグループファイルの所有権を変更することです。 コマンド:
chgrp [group ID] [path to file]
UIDと同様に、グループIDは / etc / groupの3番目の列にあります。 リモートサーバー上のファイル:
get /etc/group
!less group

SFTPを使用すると、ローカルumaskを設定できます。これにより、ローカルシステムに転送されるファイルのデフォルトのファイル権限が変更されます。
例:
lumask 022
上記のコマンドは、ローカルのumaskを 022に変更します 。このumaskを設定した後に転送されたすべてのファイルには、 644が含まれるようになりました。 デフォルトで許可。 -p
を使用すると、元の権限を引き続き保持できます。 フラグ。
ローカルファイルのアクセス許可を変更する別の方法は、SFTPを使用してシェルコマンドの動作を複製することです。これを行うには、感嘆符を追加します(! )コマンド名の前。
たとえば、 chmod
を使用します ローカルシステムでのコマンド:
!chmod [permission] [path to file]