鶏口牛後な日々

心の赴くまま、やりたいことを仕事に。

scpコマンドの使い方/ssh先にscpでファイルを置きたい/vagrant上にscpでファイルを置きたい

scp基本の使い方

scp 送りたいファイル/フォルダ名 送る先のディレクト

ディレクトリの場合は、-r(再帰的に)オプションをつける。

これで送れる。かんたん!


ssh先にscpでファイルを置きたい

もし、ssh先に送りたい場合は、<送る先のディレクトリ>のところを、<送りたい先のサーバーのユーザー名>@<送りたい先のサーバーのIPアドレス>:<サーバーの中のディレクトリパス>
としてやると良いです。
>例:
> scp <送りたいファイルパス> hoge@191.111.1.111:/Users/hoge/hogehoge/

反対に、ssh先からローカルにとってきたい場合は、<送りたいファイル/フォルダ名>のところを上と同様にサーバー情報から描いてあげればOKです。

ssh先でも、sshのconfigとかpass入力したりとかせず、ファイルのやりとりができるんですね。ちょっと不思議。

vagrant上にファイルをscpしたい時

ちなみに、vagrant上のファイルにscpでファイルを置きたい場合は、
$ vagrant ssh-config > ssh.config
vagrantの設定を一旦ファイルに書き出し、
$ scp -F ssh.config vagrant@default:/
とすると、vagrant上にもファイルを転送することができます。
Vagrant の仮想マシンと SCP でファイルをやり取りする | CUBE SUGAR STORAGE



これは便利。

しかしながら、FileZillaや、CyberDuckといったツールを使えば、FTP(File Transfer Protocol)で簡単にとって来れますね。
この方が、GUIでドラッグ&ドロップでとって来れるので、らくっちゃ楽です。


使い分けながら利用していくと良さそうです。

エラー

もし、送りたいファイルがフォルダなのに、-rをつけずにコマンドを叩いてしまうと、「<フォルダパス>: not a regular file」 というエラーが出てしまいます。
recursitiveを指定してあげれば、うまくいきます。

「no such file or directory」というエラーが出たら、基本は、パスのスペルミスを疑いましょう。

また、送り先のディレクトリが存在しない場合、
「scp: <ディレクトリパス>: Is a directory」
というエラーが出るので、先にディレクトリをmkdirで作成してからscpするようにしましょう。


以上。