kengo92iの日記

プログラミングとかやったことの記録を書いていきます。

【scpコマンド】リモート・ローカル間でファイルをやりとりするコマンド

cp(secure copy)はネットワーク上のホスト間でファイルをコピーするためのコマンドです。scpはデータ転送のためにsshを使っているため、、sshと同じく安全にファイルのやりとりができます。

ファイル名にはユーザとホストの指定を含んで指定することができ、それらのホスト間で通信を行います。具体的な書式は、[ユーザ名]@[ホスト名]:[ファイルのパス]のような書式で指定することができます。

例えば、kengo92iというユーザで、example.comというホストに接続し、ユーザディレクトリ直下にあるhoge.txtというファイルを指定する場合は、kengo92i@example.com:/home/kengo92i/hoge.txtとします。

当然のことながら、ローカルファイル名は、絶対パス名または相対パス名を使用して明示的に指定することもできます。

データの受信 (リモート→ローカル)

指定したリモートホストのファイルを、コマンドを実行したカレントディレクトリにコピーします。

scp [user_name]@[remote_host]:[remote_path] [local_path]
$ scp kengo92i@example.com:/home/kengo92i/hoge.txt .

データの送信 (ローカル→リモート)

指定したローカルファイルを、リモートホストのユーザディレクトリ直下にコピーします。

scp [local_path] [user_name]@[remote_host]:[remote_path]
$ scp fuga.txt kengo92i@example.com:.

ポートを指定する

-Pオプションを指定することで、指定したポート番号で接続する

$ scp -P 2222 kengo92i@example.com:/home/kengo92i/hoge.txt .

ディレクトリをコピーする

-rオプションを指定することで、指定したディレクトリ以下のファイルをコピーできる。

$ scp -r kengo92i@example.com:/home/kengo92i/sample ./sample

鍵を指定して接続する

-iオプションを指定することで、鍵ファイルを指定してホストに接続できます。

scp -i [key_file] ~省略
$ scp -i ~/.ssh/id_rsa admin@example.com:/home/admin/secret.txt .

ssh秘密鍵が存在しない場合は、ssh-keygen -t rsaとターミナルで実行すればsshの鍵が作成される。

その他のオプション