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

Linux

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

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

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

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

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

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

  • scpコマンドの基礎知識
  • 【実例】scpコマンドでWindowsへファイルコピー
  • scpコマンドオプション一覧

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

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

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

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通りです。

  • 絶対パスで記述(/home/yulikepython/documents/test.txt)
  • 相対パスで記述(test.txtなど)

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

コピー先情報の書き方

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

  • ユーザー名
  • IPアドレス(ドメイン名)
  • ファイルパス

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

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

たとえば、

  • ユーザー名「yulikepython」
  • IPアドレス「192.168.11.11」
  • 保存先フォルダ「/home/user/」

の場合は以下のとおり。

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サーバーを構築する方法
  • 別コンピューター(Linux)から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
  • 通信の圧縮:-C
  • 秘密鍵ファイルの指定:-i
  • ポート番号の指定:-P
  • configファイルの指定:-F

ディレクトリごとコピー:-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コマンドは、コンピューター間でファイルをコピーできるコマンド
  • Windowsへファイルコピーするなら、Windows側での設定が必要
  • scpコマンドを使えば、追加の機能が追加できる

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

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

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

✔Linuxの主要コマンド37選

✔当ブログは以下のような方に向けて書かれています

「Djangoでのアプリ開発を学びたい!」

「Djangoで開発したアプリをWebで公開するにはどうするの?」

✔当ブログ掲載の記事

  • Djangoで作る日報アプリ開発
  • WebアプリをWeb上に公開する方法
  • Webアプリ開発に必要なそのほかの情報
【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

公式LINEも始めました。記事更新についてや、当ブログ内の人気記事などの情報を定期的に配信しています。

友だち追加

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。

ITCに投げ銭をする

タイトルとURLをコピーしました