scpで複数のファイルをまとめて送信する
scpで複数ファイルをまとめてコピーする方法が意外と知られていないようなのでメモします。
scpとは
SCP (Secure Copy Protocol)は、SSHの仕組みを用いてファイルをコピーできるプロトコルです。
使いかたは通常の cp
コマンドと同じように使用できます。
scp [ファイルのコピー元] [コピー先]
ローカルホスト内(同じマシン内)でも利用できますが、基本的にはローカルホストとリモートホスト(別のマシン)のファイルやり取りでよく使われます。
ファイル送信や受信する際ファイルのパーミッション関連でエラーメッセージがでることがあります。
その際は一度/tmp
に置くとうまくいくと思います。
基本的な使いかた
ファイルを送り込む
scp [ユーザー名]@[ホスト名]:[リモートファイルパス] [ローカルファイルパス]
例)
リモートマシンのユーザー名が remoteusername リモートマシンのドメイン名が hostname.remote 送信元ファイルが ~locausername/src_file 送信先ファイルが /tmp/dest_file
の場合
scp ~localusername/src_file remoteusername@hostname.remote:/tmp/dest_file
ファイルを取り込む
scp [ローカルファイルパス] [ユーザー名]@[ホスト名]:[リモートファイルパス]
例)
リモートマシンのユーザー名が remoteusername リモートマシンのドメイン名が hostname.remote 受信元ファイルが /tmp/src_file 受信ファイルが ~localhostname/dest_file
の場合
scp remoteusername@hostname.remote:/tmp/src_file ~localusername/dest_file
複数のファイルをまとめて送信する
ファイルを送り込む
scp { [ローカルファイルパス] [ローカルファイルパス] ... [ローカルファイルパス] } [ユーザー名]@[ホスト名]:[リモートディレクトリ]
例)
リモートマシンのユーザー名が remoteusername リモートマシンのドメイン名が hostname.remote 送信元ファイルが /tmp/src_file1と/tmp/src_file2 送信先ディレクトリが ~remotename/dest_dir
の場合
scp /tmp/src_file1 /tmp/src_file2 remoteusername@hostname.remote:/tmp/dest_dir/