scpコマンドでローカル・リモート間のファイルコピー

使うとき、たまに忘れる。

ローカルファイルをリモートへコピー

カレントディレクトリの foo.txt をリモートへコピーする。
-P オプションでポートを指定。
リモートの指定は ユーザー名@ホスト名(もしくはIPアドレス):コピー先ディレクトリ

$ scp -P 22 ./foo.txt username@192.168.x.x:~/path/to/dir/

リモートファイルをローカルへコピー

リモートの ~/path/to/dir/ にある piyo.txt ファイルをローカルのカレントディレクトリにコピーする。

$ scp -P 22 username@192.168.x.x:~/path/to/dir/piyo.txt ./

ディレクトリをコピーしたい

-r オプションをつけることでディレクトリをコピーすることも可能。

ローカルからリモート。

$ scp -r ./hoge_dir username@192.168.x.x:~/path/to

リモートからローカル。

$ scp -r username@192.168.x.x:~/path/to/hoge ~/

SSH鍵を指定して接続

-i オプションを使うことで鍵を指定して接続できる。

$ scp -i path/to/keyfile ./foo.txt username@192.168.x.x:~/path/to/dir/

ssh configを指定して接続

configに設定している接続名を使えばいいだけ。

Host piyopiyo
    HostName 192.168.x.x
    Port 22
    User username

このようなconfigがある場合は以下のようにすればいい。

$ scp ./foo.txt piyopiyo:~/path/to/dir/