一般にセキュアコピーコマンドとして知られているSCPは、ネットワーク内のホスト間でファイルやディレクトリをコピーするためにLinuxシステムで使用されるユーティリティツールです。 SSHは、ファイルの転送とユーザーの認証に使用されます。 sshを使用してリモートサーバーにアクセスするには資格情報が必要なため、同様の方法で、SCPコマンドの実行中にリモートホストの資格情報を知る必要があります。この記事では、いくつかの便利なSCPコマンドについて学習します。
あるサーバーから別のサーバーにファイルをコピーする
ネットワーク内のあるサーバーから別のサーバーに単一のファイルをコピーするには、次のコマンドを使用します。
$ scp file.txt [email protected]:/root/Linuxways
ここで、file.txtはファイル名、rootはリモートホストのユーザー名、192.168.178.10はリモートサーバーのアドレス、/ root/Linuxwaysはリモートディレクトリです。
コピーステータスを確認する
Scpコマンドとオプション-vを使用して、コピーステータスを表示できます。
$ scp -v file [email protected]:/root/Linuxways
出力:
ファイル属性の保持
ファイル/フォルダを宛先サーバーにコピーすると、コピーされたファイルは宛先サーバーの最新のタイムスタンプを取得します。オプション-rvpを指定してSCPコマンドを使用し、権限、タイムスタンプなどのファイルの属性を保持します。
$ scp -rvp file [email protected]:/root/Linuxways
出力:
出典:
目的地:
SCP出力を非表示にする
警告、エラー、進行状況メーターなどのScp出力は、次のようにオプション-qを指定してSCPを使用することで抑制できます。
$ scp -q file [email protected]:/root/Linuxways
ランダムポートを使用してファイルを転送する
オプション-Pを指定したScpコマンドを使用して、デフォルトの22ポート以外の別のポートを使用してファイルを転送できます。 -Pコマンドの後にSSHポートを指定し、SCPコマンドを次のように実行します。
$ scp -P 4022 file [email protected]:/root/Linuxways
ここで、4022はリモートホストのカスタムSSHポートです。
パスワードの代わりに認証キーを使用する
リモートホストがパスワードではなくsshキー認証で構成されている場合は、sshキーファイルを使用してリモートホストにアクセスする必要があります。ファイル/ディレクトリを転送するには、sshキーファイルを指定し、オプション-iを指定してSCPコマンドを実行します。
$ scp -i private.pem file [email protected]:/root/Linuxways
ここで、private.pemはリモートサーバー認証のキーファイルです
帯域幅を制限する
ファイル転送の帯域幅は、オプション-lを指定したSCPコマンドを使用して制限できます。この例では、帯域幅を200kbit/sに制限しています
$ scp -l 200 centos-iso.tar.gz [email protected]:/root/Linuxways
リモートホストからファイルをコピー
ファイル/フォルダは、次のようにSCPコマンドを使用して、リモートサーバーからローカルホストにコピーできます。
$ scp [email protected]:/root/Linuxways/file .
rootがリモートマシン192.168.178.10のユーザー名である場合、/ root /Linuxwaysはリモートディレクトリであり、。ローカルサーバーの現在のディレクトリです。
出力:
オプション-rを指定したScpコマンドを使用して、リモートホストから次のようにディレクトリをコピーできます。
$ scp -r [email protected]:/root/Linuxways .
Linuxwaysはリモートディレクトリの名前です。
出力:
IPV4のみに基づく転送ファイル
IPV4アドレスのみを使用して、リモートホストに接続し、次のようにオプション-4を指定したSCPコマンドを使用してファイル/ディレクトリを転送できます。
$ scp -4 file [email protected]:/root/Linuxways
IPV6アドレスのみを使用する必要がある場合は、次のようにSCPコマンドを実行します。
$ scp -6 file [email protected]:/root/Linuxways
厳密なファイルチェックを無効にする
リモートホストからローカルサーバーにファイル/フォルダをコピーする際の厳密なファイルチェックは、次のようにオプション-Tを指定してSCPコマンドを使用することで無効にできます。
$ scp -T [email protected]:/root/Linuxways/documents.tar.gz .
ここで、192.168.178.10はリモートホストであり、documents.tar.gzはファイル名です。
ファイル/フォルダを圧縮して転送を高速化
ファイル/ディレクトリは、リモートサーバーにコピーするときにオプション-Cを指定したSCPコマンドを使用して圧縮できます。ファイルの圧縮はネットワークレベルで行われ、宛先ではファイルサイズはソースと同じになります。
$ scp -C centos.iso.tar.gz [email protected]:/root/Linuxways
ファイルの代わりにディレクトリをコピー
オプション-rを指定してSCPコマンドを使用すると、個々のファイルの代わりにディレクトリを個別にコピーできます。
$ scp -r example [email protected]:/tmp
例はフォルダの名前です。
複数のファイルをコピーする
ファイルの名前を次のように指定することにより、SCPコマンドを使用して複数のファイルをリモートサーバーにコピーできます。
$ scp file file1 file2 file3 file4 [email protected]:/root/Linuxways
ここで、file file1file2file3およびfile4はファイル名です。
別の暗号を使用してファイル/フォルダを暗号化する
ファイル転送中、LinuxはAES-128アルゴリズムを使用してファイルを暗号化します。オプション-cを指定したSCPコマンドを使用すると、他の暗号化アルゴリズムを使用できます。この例では、3des-cbc暗号を使用してファイルを暗号化しました。
$ scp -c 3des-cbs file [email protected]:/root/Linuxways
リモートからリモートホストへのコピー
ファイル/ディレクトリは、次のように、あるリモートホスト(例host1)から別のリモートホスト(host2)にローカルホスト(ホスト)からコピーできます。
$ scp [email protected]:/root/Linuxways/file [email protected]:/root/Linuxways
ここで、192.168.178.10->リモートホスト(host1)
192.168.178.11->リモートホスト(host2)
結論
この記事では、ネットワーク内のホスト間でファイル/フォルダーをコピーするための便利なSCPコマンドをいくつか学びました。提案やフィードバックがあれば、コメントを残してください。