Linuxでローカルホストのファイルをリモートホスト(他のコンピュータ)へ、sshプロトコルを使用してデータ転送の通信を暗号化して、安全にコピーする場合に使われるのがscpコマンドです。
scpコマンドを利用すれば、img(画像)やcsv(ファイル)の転送も可能になります。
本日はそんなscp(エスシーピー)コマンドの使い方と実際の使用例を紹介していきます。
コンテンツ
scpコマンド
Secure Copyが短くなってscp(エスシーピー)と呼びます。
先に説明をしましたが、Linuxでローカルホストのファイルをリモートホスト(他のコンピュータ)へ、sshプロトコルを使用してデータ転送の通信を暗号化して、安全にコピーする場合に使用をします。
scpコマンドの使い方
それでは実際にコマンドを確認してみます。
1 |
% scp オプション コピー元 コピー先 |
こう書かれただけだど、何をどうすれば良いかわかりませんね。
以降で実際に使用例を元にコマンドを詳細に記述していきます。
使用例①
AWSのec2インスタンスに、ローカルからsample.csvファイルを送りたい時。
今回のケースでは.pemでデジタル証明書を利用して、リモートにファイルをコピーする方法です。
実際のコマンドが以下になります。
1 |
tom@mbp .ssh % scp -i key-sample.pem /Users/tom/sample.csv ec2-user@xx.xx.xxx.xxx:/home/ec2-user/ |
-i key-sample.pemはセットで考えてください。.sshディレクトリにkey-sample.pemファイルを置いており、.pemのデジタル証明書を利用するために-iオプションを利用します。(ちなみに詳しいオプションは後述しております)
今回、sample.csvというファイルを送りたいので/Users/tom/sample.csvと絶対パスで記述しています。
ec2-userは使用するユーザー名です。
xx.xx.xxx.xxxは送信先のIPアドレスになります。
/home/ec2-user/は送信先のsample.csvファイルをコピーするディレクトリになります。
使用例②
AWSのec2インスタンスに、ローカルからディレクトリを送りたい時。
今回は使用例①の少しだけ応用で、ディレクトリを送りたい時です。
ディレクトリには複数のファイルが格納されており、わざわざ一つずつscpコマンドを入力するのも非効率なのでまとめて送ることにしました。
実際のコマンドが以下になります。
1 |
tom@mbp .ssh % scp -ri key-sample.pem /Users/tom/.secret_file ec2-user@xx.xx.xxx.xxx:/home/ec2-user/ |
オプションを複数利用する際は、-riのような書き方をします。
それ以外は一緒です。
こうすることで、送信先の/home/ec2-user/ディレクトリには、.secret_fileディレクトリが生成されかつ中身にファイルが入った状態でコピーされています。
オプション一覧
オプション一覧を以下に書いておきます。
-C | 通信を圧縮する |
-i | RSAまたはDSA認証の秘密鍵ファイルを指定する |
-P | ポート番号を指定する |
-p | オリジナルファイルの更新時間とモードを維持する |
-r | ディレクトリ内を再帰的にコピーする |
-1 | SSHプロトコルバージョン1を使用する |
-2 | SSHプロトコルバージョン2を使用する |
-4 | IPv4を使用する |
-6 | IPv6を使用する |
以上。
最後に
いかがでしたでしょうか。
以上が、「【Linux】scpコマンドでローカルからリモートへファイルを転送する方法」の紹介記事になります。
コメントを残す