ゲストOS(Vagrant)とホストOS(Windows)間でscpによりデータをやり取りするコマンドメモ
はじめに
違うサーバどうしでファイルをやり取りするのはscp
コマンドが一般的である。
ここでは、scpの基本コマンドの解説に加え、Vagrant仮想環境とローカルのファイルのやり取りを実例としてメモする。
一般的な方法と、
> scp -r -P 2222 -i 【秘密鍵の場所(ローカル)】 vagrant@127.0.0.1:/home/vagrant/workspace/tmp/ ./
簡単な方法を解説する。
scp -r vagrant:/home/vagrant/workspace/tmp/ ./
実施した環境
- Windows環境の上に、VirtualBox + Vagrant で構築したLinux環境を利用。
- OSはubuntuを利用。
Vagrant環境からローカルにファイルをコピーする(基本コマンド編)
Vagrant環境の/home/vagrant/workspace/tmp/
フォルダから、ローカルのカレントフォルダにファイルをコピーするコマンドは以下となる。
PowerShellで実行する。
> scp -r -P 2222 -i 【秘密鍵の場所(ローカル)】 vagrant@127.0.0.1:/home/vagrant/workspace/tmp/ ./
コマンドの解説
基本コマンドは以下。
$ scp 【コピー元】 【コピー先】
重要なオプションとしては、
がある。
また、コピー元となるVagrant環境のフォルダ指定は、
【ユーザ名】@【IPアドレス】:【パス】
とする。
ここで、
を調べる必要がある。調べるコマンドは以下。
> vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 (省略)
もっと簡単なコマンドでscpする方法
C:\Users\[User名]\.ssh\config
にSSHの情報を記載しておくことができる。
このファイルで、「名前」と「設定値」をセットで管理しておけば、「名前」を使ってscp
が可能である。
.ssh\config
の設定内容
Vagrantの場合は、> vagrant ssh-config
で取得してきた情報をそのまま記載すればよい。
外部のサーバでも同様に記載が可能である。
C:\Users\[User名]\.ssh\config
Host aws HostName xx.xxx.xxx.xxx User ec2-user IdentityFile C:\Users\xxxxxx\xxxxx.pem Host vagrant HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile C:/Users/User/vagrant/ubuntu64_18/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
私の場合はvagrantとAWS-EC2の設定が入っている。
tomiko0404.hatenablog.com
こちらの記事で、VSCode用に設定していた。
scpコマンド
上記.ssh\config
でvagrant
という名前を付けている設定値を使いたい。
コマンドは以下のようになる。
scp -r vagrant:/home/vagrant/workspace/tmp/ ./
おわりに
scpコマンドを使ってサーバ間でデータをやりとりすることができた。