linuxファイル転送を行うコマンド!scpコマンドの使い方とは?

linuxコマンドでリモートとローカル間のファイル転送を行いたいと考えているが、scpコマンドの使い方がわからないという方いらっしゃると思います。

私も初心者の頃はscpコマンドの使い方がわからず、ネットで調べながらscpコマンドを使用していました。

初心者の方にとっては、scpコマンドの使い方は少し難しいと感じることが多いと思いますが、業務の中でも使う機会の多いコマンドになりますので、覚えておくことをおすすめします。

scpコマンドの使い方を知りたい方や初心者インフラエンジニアの方はぜひ、参考にしてみてください。

この記事でわかること
・linux scpコマンドとは
・linux scpコマンドのオプション
・関連コマンド
・linux scpコマンド関連でよくある質問


linux scpコマンドとは

scpコマンドのオプションや使い方を説明する前にまずscpコマンドはどういうときに使うコマンドなのか説明していきます。

scpコマンドとは、リモートサーバとローカルサーバ間のファイル転送を可能にするコマンドになります。

例えば、192.168.0.0というIPのローカルサーバから10.1.0.0というIPのリモートサーバへのファイル転送を行いたい場合には、scpコマンドを使用してファイルの転送を行います。

主にローカルサーバとリモートサーバでファイルの内容を同じにしたい場合などに使用します。

scpコマンドのイメージ図はこちら

linux scpコマンドのオプション

scpコマンドのオプションについて実際にどういう書式で実行するのかを含めて説明していきます。

scpコマンドの使い方が最初は難しいと感じる方多くいらっしゃると思いますが、覚えるとすごく便利になるのでぜひ、参考にしてみてください。

オプション説明
-C通信を暗号化する
-iRSAまたはDSA認証の秘密鍵を指定する
-Pポート番号を指定する
-pパーミッションを保持した状態でコピーする
-rディレクトリ内を再帰的にコピーする
-v情報を表示する
-1SSHのプロトコルバージョン1を使用する
-2SSHのプロトコルバージョン2を使用する

-C・・・通信を暗号化する

ーCオプションは通信を圧縮するオプションになります。

主にディレクトリごとコピーする時やコピー対象ファイルの容量が大きい時などのファイルの転送時間がかかってしまう際に使用します。

-Cオプションを使うと通信を圧縮してから、ファイルの転送を行うため、ファイルの転送時間を短縮することができます。

書式
scp -C ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス
使用例

-i・・・RSAまたはDSA認証の秘密鍵を指定する

-iオプションは、RSAやDSA認証の鍵を指定するオプションになります。

主に転送先のサーバに鍵の設定がされており、ログイン時に鍵を使用してログインする必要がある場合などに-iオプションを使用し、鍵を指定してファイルの転送を行う必要があります。

そのため、転送先のサーバが鍵で保護されている場合には、-iオプションを使用し、ファイル転送を行います。

書式
scp -i 秘密鍵 ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス
使用例

-P・・・ポート番号を指定する

-Pオプションはポート番号を指定するコマンドにないます。

scpコマンドを使用する際には、デフォルトで22番ポート使用します。

SSHの待ち受けポートを22番ポートから変更されている場合には、-Pオプションをつけて変更後のポート番号を指定することで通常通りにscpコマンドが使用出来るようになります。

そのため、SSHの待ち受けポートを22番から変更している場合には、-Pオプションを使用します。

書式
scp -P ポート番号 ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス
使用例

-p・・・パーミッションを保持した状態でコピーする

ーpオプションはパーミッションを保持した状態でコピーするオプションになります。

基本的にファイルをコピーする際には、パーミッションが変わってしまうため、パーミッションを保持した状態でコピーした場合に使用します。

パーミッションが書き換わってしまうと、コピー前にはできたファイルの更新や読みとりなどの動作が一定のユーザでできなくなってしまう恐れがあります。

ファイルのコピーを行う際には、パーミッションを保持した状態でコピーすることをおすすめします。

書式
scp -p ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス
使用例

-r・・・ディレクトリ内を再帰的にコピーする

ーrオプションは、ディレクトリごとコピーするコマンドになります。

オプションをつけずにコピーする場合にはディレクトリごとのコピーはすることができません。

ーrオプションをつけることでファイルのみのコピーではなくディレクトリごとコピーすることが可能になります。

書式
scp -r ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス
使用例

ーv・・・情報を表示する

ーvオプションは、scpコマンド実行時の詳細な情報を表示するオプションになります。

オプションをつけずにscpコマンドを使用するとファイル転送できたことの確はできますが、詳細な情報は表示されません。

scpコマンド実行時に詳細な情報を表示したい場合には、ーvオプションを使用します。

書式
scp -v ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス
ーvオプションの詳細な情報の表示例はこちら
使用例

ー1・・・SSHのプロトコルバージョン1を使用する

ー1オプションは、SSHのプロトコルバージョン1を使用してファイル転送を行うオプションになります。

scpコマンド実行時にSSHのプロトコルバージョン1を使用する場合には、ー1オプションを使用します。

書式
scp -1 ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス

ー2・・・SSHのプロトコルバージョン2を使用する

ー2オプションは、SSHのプロトコルバージョン2を使用してファイル転送を行うオプションになります。

scpコマンド実行時にSSHのプロトコルバージョン2を使用する場合には、ー2オプションを使用します。

書式
scp -2 ユーザ名@IPアドレスorホスト名:コピーしたいファイル 保存先のパス

linux scpコマンドの関連コマンド

scpコマンドと使用用途が似ているコマンドを紹介していきます。

使用用途が似ているので、その場面によってどのコマンドを使用すればいいのか考えながら使用しましょう。

cpコマンド

cpコマンドは、ローカルファイルのコピーを行うコマンドになります。

scpコマンドはリモートとローカル間のファイルの転送で、cpコマンドはローカルとローカルでのファイル転送を行うコマンドになります。

cpコマンドは、自サーバ内のみのファイルの転送が可能なコマンドになります。

書式
cp [オプション] コピー元ファイル [コピー先ファイル]

rsyncコマンド

rsyncコマンドはファイルの差分をコピーするコマンドになります。

rsyncコマンドに関してもcpコマンドと同様でローカル間のファイル転送でのみ使用することができます。

ファイルの差分のみのコピーになるため、cpコマンドに比べて処理の速度が早いです。

書式
rsync [オプション] コピー元ファイル [コピー先ファイル]
rsyncコマンドについてはこちら

linux scpコマンド関連でよくある質問

scpコマンド関連でよくある質問をまとめました。

scpコマンドで気になる箇所がある方はまず、こちらを参照してください。

SCPとはなんですか。

SSHによってリモートホストとのセッションを通じて安全にファイル転送を行うプログラムになります。

TeraTermでSCPを使用することはできますか。

リモート側でアクセス許可していればTeraTermでSCPを使用することはできます。

scpコマンドを使用する際の注意点はありますか。

scpコマンドを使用する際には、対象ファイル、対象ホストが間違っていないか注意が必要になります。
また、権限の問題でファイルが転送できない場合もあります。

まとめ

いかがでしたか。

本記事では、linuxでリモートとローカル間のファイル転送を行うscpコマンドについて解説してきました。

コマンドの使い方が難しそうと思う方いらっしゃると思いますが、慣れればかなり便利なコマンドになります。

scpコマンドの使い方を知りたい方やlinux初心者の方はぜひ、参考にしてみてください。

【初心者エンジニア必見!エンジニアが持っておきたい持ち物・ガジェット一覧】

エンジニアにおすすめの持ち物とガジェットを一覧でまとめています。

利用することで作業効率を上げることのできる物を厳選して紹介しているため、エンジニアの方やリモート勤務の方は特に参考にしてみてください。




ABOUT US
はなちゃん
25歳インフラエンジニア5年目のはなちゃんです。 未経験からインフラエンジニアになった経験を生かしてインフラエンジニアの基礎的部分、linux、awsを中心にブログを書いています。 転職サイトを利用した転職経験もあります。 ■保有資格:LPIC lenel3・ITパスポート・AWS SAA ■業務経験:インフラ業務の設計~運用まで