LinuxとWindowsの間でscpコマンドでファイルを転送する方法

LinuxとWindowsの間でscpコマンドでファイルを転送する方法

Linuxサーバーをリモートから管理/操作する方法としてSSHを利用している場合、Linuxサーバー(SSHサーバー)とファイルを送受信するならscpコマンドが便利です。

そこでここでは、LinuxのSSHサーバーとWindows 10のSSHクライアントの間で、scpコマンドを使ってファイルを送受信する方法を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のソフトウェアやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
RockyLinux(SSHサーバー)9.2
Windows 10 Pro 64bit(SSHクライアント)22H2

scpコマンドの書式

scpコマンドは、SSHサーバー(リモートマシン)とSSHクライアント(ローカルマシン)の間でファイルを安全に転送するためのツールで、SSHクライアント上で実行します。

scpコマンドの基本的な書式は次のとおりで、ローカルマシン上のファイルをリモートマシンに転送したり、逆にリモートマシン上のファイルをローカルマシンに転送することができます。

> scp [送信元] [送信先]

scpコマンドの使用例

ファイルを転送する

ローカルマシン上のファイル「testfile.txt」を、リモートマシン「remote-server」に「user01」というユーザーで接続して、ディレクトリ「/home/user01」に転送したいときは、次のようにコマンドを実行します。

> scp testfile.txt user01@remote-server:/home/user01

逆に、リモートマシン「remote-server」上のファイル「/home/user01/testfile.txt」を、ローカルマシンのフォルダー「E:\test」に転送したいときは、次のようにコマンドを実行します。

> scp user01@remote-server:/home/user01/testfile.txt E:\test

複数のファイルを転送する

複数のファイルを転送したいときは、送りたいファイルをスペースで区切って指定したり、ワイルドカード「*」を使って指定することができます。

> scp testfile.txt testfile2.txt user01@remote-server:/home/user01
> scp *.txt user01@remote-server:/home/user01

フォルダーを転送する

フォルダーとフォルダー内のファイルをまるごと転送したいときは、-rオプションを付加して実行します。

$ scp -r dir1 user01@remote-server:/home/user01

あとがき

なお、scpコマンドでSSHサーバー(リモートマシン)に接続する際は認証が必要になるため、スクリプトなどで自動的に認証してファイル転送したいような場合は、SSHサーバーに鍵認証で接続できるよう設定しておくとよいでしょう。