Linuxでローカルホストとリモートホスト間でファイルを転送する場合は、scpコマンドを使います。scpコマンドはSSHプロトコルを使用します。そのため、ネットワーク通信は暗号化されるので、安全にファイルの転送を行うことができます。
scpコマンドの使い方
scpコマンドの構文は以下の通りです。
1 |
$ scp [オプション] コピー元 コピー先 |
主なオプション
-C | 通信を圧縮する |
-i 秘密鍵ファイル | RSAまたはDSA認証の秘密鍵ファイルを指定する |
-P ポート番号 | ポート番号を指定する |
-p | オリジナルファイルの更新時間とモードを維持する |
-r | ディレクトリ内を再帰的にコピーする |
-v | プログレス情報を表示する |
-1 | SSH1を使用する |
-2 | SSH2を使用する |
-4 | IPv4を使用する |
-6 | IPv6を使用する |
リモートホストからローカルにファイルをコピーする
リモートホストからローカルの「~/tmp」にコピーする例を3つ示します。
1 2 3 4 5 6 7 8 |
# ひとつのファイル「/home/user/file1」をコピーする例 $ scp user@192.168.10.1:/home/user/file1 ~/tmp # ワイルドカードで複数のファイルをコピーする例 $ scp user@192.168.10.1:/home/user/*.txt ~/tmp # 複数のファイルを、{}で囲んで「,」で区切り指定しコピーする例 $ scp user@192.168.10.1:/home/user/{file1,file2,file3} ~/tmp |
scpコマンドでは「@」の前にリモートホストに接続するユーザー名を指定します。また、「@」の後に「ホスト名」または「IPアドレス」を指定し、「:」の後にファイルパスを指定します。
ローカルからリモートホストにファイルをコピーする
ローカルの「~/tmp/file1」をリモートホストの「/home/user/tmp/」にコピーする例です。
1 2 3 |
# scp コピー元ファイル ユーザ名@リモート・ホスト名:/リモート先のPATH $ scp ~/tmp/file1 user@192.168.10.1:/home/user/tmp/ |
リモートホストから別のリモートホストにファイルをコピーする
リモートホスト「user1@192.168.10.1」のファイル「/home/user/tmp/file1」をリモート・ホスト「user2@192.168.10.2」の「/home/user/tmp/」へコピーする例です。
1 |
$ scp user1@192.168.10.1:/home/user/tmp/file1 user2@192.168.10.2:/home/user/tmp/ |
ディレクトリごとコピーを行う
ディレクトリごと再帰的にコピーする場合、「-r」オプションを指定します。
リモートホストの「/home/user/tmp」以下のファイルとディレクトリすべてをローカルの「~/tmp」にコピーする例です。
1 |
$ scp -r user1@192.168.10.1:/home/user/tmp ~/tmp |
情報を保持したままコピーを行う
コピー元ファイルとディレクトリの更新時間、アクセス時間、パーミッションを保持したまま転送する場合は、「-p」オプションを指定します。ただし、所有者やグループの情報は引き継がれません。
リモートホストの「/home/user/tmp」以下のファイルとディレクトリすべてを、ファイルの更新時間、アクセス時間、パーミッションを保持してローカルの「~/tmp」にコピーする例です。
1 2 3 4 |
$ scp -p -r user@192.168.10.1:/home/user/tmp ~/tmp # 複数のオプションは「-pr」のようにまとめてもよい $ scp -pr user@192.168.10.1:/home/user/tmp ~/tmp |