scpコマンドでターミナル接続先のリモートファイルをローカルにダウンロードする方法
sshコマンドを使ってSSHログインをして、その先のファイルをローカルにダウンロードしたいことがあり、方法を調べました。
FTPソフトが使えると視覚的にも非常に分かりやすいのですが、どうしてもそれはできない事情もあり、仕方なくターミナルで行いました。
scpコマンド
scpは「Secure Copy」の略でリモートマシンとローカルマシン間でファイルやフォルダをコピーしたり、リモートマシン同士でファイル・フォルダをコピーできます。
通信にはsshコマンドと同じ認証を使用するので、SSH接続をできるようにしておく必要があります。
$ scp [オプション] [コピー元のパス] [保存先のパス]
リモートパスの指定には下記の形式を使います。
これはsshコマンドを使うときと一緒です。
[ユーザー名]@[サーバーのホスト名かIPアドレス]:[パス]
オプション
オプションは下記の通りでフォルダごとダウンロードしたい場合は「-r」オプションを付けます。
オプション | 内容 |
---|---|
-i [鍵ファイルのあるパス] | SSH接続時に使用する鍵ファイルのあるパスを指定する |
-r | ディレクトリごとコピーする |
-P [ポート番号] | SSHのポートを変更している場合などに接続に使用するポートを指定する |
-p | コピー元のタイムスタンプやパーミッションを保持する |
ローカルのカレントディレクトリにコピーしたい場合は省略も可能
リモートのファイルをローカルのカレントディレクトリにコピーしたい場合は、ローカルのパス入力は省略可能です。
$ scp [オプション] [コピー元のパス]
これでカレントディレクトリにコピーされます。
ローカルからリモートへのアップロードも可能
ローカルのパスを先に入力して、後ろにリモートのパスを入力すればアップロードも可能です。
パスの入力の前後を間違えると反対の作業をしてしまうので注意が必要です。