サイトアイコン ITC Media

scpコマンドの基本と使い方|Windowsへコピーする実例付

(最終更新月:2022年9月)

✔このような方へ向けて書かれた記事となります

「scpコマンドって何ができるの?」

「scpコマンドの使い方が知りたい」

「scpコマンドを使った実例を教えて!」

✔当記事を通じてお伝えすること

当記事では、scpコマンドの基本や使い方だけでなく、筆者が実際に使っているscpコマンドの実例と活用方法も公開しています。

ぜひ最後までご覧ください。

scpコマンドの基礎知識

まずはscpコマンドの基礎知識をお伝えします。

後述している実例を理解するには、こちらの基礎知識が大切です。

scpコマンドとは?

scpコマンドとは、2台のコンピューター間で、ファイルやディレクトリをコピーするコマンドです。

目の前で利用しているコンピューターを「ローカルコンピューター」、コピー先のコンピューターを「リモートコンピューター」といいます。

SSH接続を使って、ファイルやフォルダを、ローカルコンピューターからリモートコンピューターへ、コピーします。

「SSH接続って何?」という方は以下をご覧ください。

scpコマンドの構成

scpコマンドの構成は以下のとおりです。

scp コピー元のファイルパス コピー先でのユーザー名@コピー先のIPアドレス(ドメイン):コピー先のファイルパス

たとえば私はReactフレームワークで作られた「dist」というフォルダをリモートコンピューターへコピーし、アプリ公開をしています。

以下のようなコマンドです。

scp -r dist username@example.com:/home/yulikepython/www/

「コピー元ファイルパス」の書き方

コピー元ファイルの書き方は2通りです。

実行する場所が決まっているなら相対パスで問題ありませんが、どこからでも実行できるようにするなら絶対パスがおすすめです。

コピー先情報の書き方

以下のとおり、コピー先の情報が必要になります。

ファイルパスは、保存したいフォルダを指定すればOKです。

ユーザー名は、リモートコンピューターにアクセスする際のユーザー名を入力します。

たとえば、

の場合は以下のとおり。

yulikepython@192.168.11.11:/home/user/

今までの内容を合算すると以下のとおりになります。

scp /home/yulikepython/documents/test.txt yulikepython@192.168.11.11:/home/user/

実行すると、ログインパスワードを求められるので、入力すれば完了です。

scpコマンドでディレクトリごとコピー

もしフォルダごとコピーしたいなら、-rオプションを、scpのあとに入力します。

scp -r dir1 yulikepython@192.168.11.11:/home/user/

scpコマンドで複数のファイルをコピー

複数のファイルをコピーするには2通りの方法があります。

ファイル名をスペースで区切って記述

ファイル名をスペースで区切れば複数のファイルを指定できます。

以下は「test1.txt」「test2.txt」をコピーする例です。

scp test1.txt test2.txt yulikepython@192.168.11.11:/home/user/

「*」を使う

「*」を使うと、当てはまるもの全てとなります。

たとえばtxtファイルを全てコピーしたいなら以下のとおり。

scp *.txt yulikepython@192.168.11.11:/home/user/

scpコマンドでWindowsコンピューターへファイルをコピー

scpコマンドを使ってWindowsコンピューターへファイルをコピーする方法をお伝えします。

流れとしては以下のとおり。

WindowsでSSHサーバーを構築する方法

Windowsコンピューターで、SSHサーバーを構築するには、以下のステップが必要です。

  1. WindowsでOpenSSH サーバーをインストール
  2. SSHサーバーのデフォルトターミナルをGit bashへ変更する
  3. WindowsでSSHサーバーを起動する

WindowsでOpenSSH サーバーをインストール

WindowsではOpenSSH サーバーというアプリをインストールしなければ、SSHでの接続ができません。

以下の手順で進めましょう。

設定 > アプリへ進みます。

オプション機能へ進みます。

Open SSHがあるかどうかを確認し、なければ機能の追加をクリックします。

検索バーに「openssh」と打ち込み、Open SSHをインストールします。

SSHサーバーのデフォルトターミナルをGit bashへ変更する

OpenSSHサーバーの設定を書き換える必要があります。

なぜならこのままSSH接続をしても、コマンドプロンプトが立ち上がることになり、上手くいかないからです。

LinuxやMacで使えるターミナル「Git bash」が立ち上がるように設定しましょう。

Power Shellを右クリックし、管理者権限で立ち上げたら、以下のコマンドを入力してください。

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\bin\bash.exe" -PropertyType String -Force

WindowsでSSHサーバーを起動する

設定の変更が完了したら,サーバーを起動します。

サーバーはインストールしただけでは、起動されていないからです。

PS C:\WINDOWS\system32> Start-Service sshd

別コンピューター(Linux)からscpコマンドでWindowsへコピー

WindowsコンピューターでSSHサーバーが起動したら、いよいよファイルのコピーに入ります。

まずはSSH接続で、サーバーが起動しているか試しましょう

起動できていたら、別のターミナルでscpコマンドを入力します。

パスワードを求められるので、ログイン時のパスワードを入力すればOKです。

確認してみるとコピーされているのがわかりますね。

無事Windowsコンピューターへscpを使ってファイルコピーができました

scpコマンドのオプション一覧

こちらではscpコマンドで使えるオプションの解説をします。

オプション一覧を知っておけば、できることの選択肢が広がるからです。

ディレクトリごとコピー:-r

-rオプションを使うと、ディレクトリごとコピーできます。

scp -r ディレクトリ名 保存先情報

通信の圧縮:-C

-Cオプションを使うと通信を圧縮できます。

scp -C *.txt 保存先情報

秘密鍵ファイルの指定:-i

秘密鍵ファイルがデフォルトの「~/.ssh/id_rsa」以外の場合、指定する必要があります。

scp -i /home/yulikepython/.ssh/original_file コピー元ファイル コピー先情報

「/home/yulikepython/.ssh/original_file」が秘密鍵ファイル情報です。

ポート番号の変更:-P

SSHのポート番号を変更している場合、-Pオプションを使って指定します。

scp -P 10000 *.txt 保存先情報

ポート番号が「10000」の例です。

configファイルの指定:-F

-Fオプションを使うと、指定したconfigファイルを読み込めます

scp -F original_config コピー元ファイル 保存先情報

「original_config」が指定したconfigファイルになります。

scpコマンド|パスワードから秘密鍵へ変更する

ローカルとリモートのコンピューターでとくに設定を済ませてなければ、scpコマンドを実行する度にパスワードの入力が必要です。

もし何度もやりとりをするコンピューターで、パスワードの入力が面倒なら、秘密鍵の設定がおすすめです。

設定方法は以下の記事で解説しています。

まとめ:コンピューター間でコピーしたいならscpコマンドは最適

当記事の内容をまとめます。

scpコマンドの構成は、以下のとおり。

scp コピー元ファイル コピー先情報

コピー元ファイルやコピー先情報の書き方だけ気をつければ簡単に実行できます。

✔Linuxの主要コマンド37選

モバイルバージョンを終了