ゴクゴクたま~にだが、ログインユーザに権限のないディレクトリ(rootの所有しているディレクトリとか)に対してscpを実行したい、といった事がある。

ただscpコマンドは基本的にそのような機能は有しておらず、リモート側でsudo経由でscpを実行してくれるような挙動はしてくれない。なので、大体こういった場合には(前にもここに書いたのだけど)一度tarで固めた後にsshにパイプで渡して、それをそのまま展開してしまう方法が一般的…というか楽だ。


scpを使う場合、サーバ側にもscpがインストールされて無いといけないのだけど、ごくたまにscpがインストールされていない場合がある。 そんなときは、以下のようにすることでsshコマンド経由でファイルのやり取りをすることができる。

単体ファイルの場合

cat file | ssh user@host 'cat > ./file' # リモートサーバにコピーする場合
ssh user@host 'cat ./file' | cat > ./file # リモートサーバからコピーする場合

scpコマンドで覚えておきたい使い方7個

以前、sshコマンドの覚えておきたい使い方について記述した事があったが、今回はscpコマンド。
scpはsshプロトコルを利用しているので、環境によってはFTPよりも使い勝手が良いのでよく使われている。今回は、そんなscpコマンドで覚えておきたい使い方について記述する。

1.基本の使い方

基本的には、以下のようにコマンドを実行する。

scp [[ユーザ@]ホスト:]file1 [[ユーザ@]ホスト:]file2

上の実行例を見てもらえればわかるように、ローカルからリモート、リモートからローカル、そしてリモートからリモートへのコピーも可能だ。

●ローカルからリモート...


vimでリモート先のファイルをsshプロトコル経由で編集する

最近、どうもLinux上ではemacsではなくvimを利用する事が多いのだが、その際に知ったので備忘として残しておく。
vimでは、以下のようにコマンドを実行することでリモート先のファイルをsshプロトコル経由で編集することが出来る。

vim scp://ユーザ名@リモートホスト(IPアドレス)//編集対象のファイル

実際にやってみたのがこちら。
まず、既存のファイル「/work/work/test/test2.sh」の中身を確認後、上記コマンドを実行している。

上記コマンドを実行した結果、/tmpフォルダに編集用の一時ファイルが作成される。
そのファイルを開くかを確認さ...