2008年 9月 22日(月曜日) 15:56

【Linux Tips】scpやtarでファイルをアップロードするには

評価:
(0 票)

開発環境からLinux/UnixのWebサーバにファイルをアップロードするときの定番はFTPですね。Windowsからアップロードするときは、FFFTPなどのFTPクライアントを使うと便利です。

ただ、Linuxを使っていてファイルを一つだけアップロードしたいときなどにはFTPはちょっと面倒に感じます。そんなときは、SSHコマンドの一つ、"scp" (Secure Copy)を使うと便利です。さらに、sshとtarと組み合わせて複数のファイルやディレクトリをまとめて転送することもできます。

scpを使って単一のファイルをアップロードする

scpはローカルディスク上でファイルをコピーするcpコマンドの感覚で、しかもSSHを使って安全にファイルの転送ができます。scpの簡単な使い方は次のようになります。

scp [ローカルファイル名] [ユーザ名]@[サーバ名]:[転送先ファイル名]

例えば、bake.phpというファイルをwww.awaresoft.jpのユーザkuraのホームディレクトリにコピーする場合は次のようになります。

$ scp bake.php 
 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 :~/bake.php

 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 's password: (パスワードを入力)
bake.php                                100%   14KB  14.4KB/s   00:00

tarを使って複数のファイルをディレクトリごとアップロードする

tarコマンドはファイルをまとめてアーカイブをしたり展開したりするのに使いますが、標準入出力やsshコマンドとの組み合わせで複数ファイルのアップロードにも使えます。ファイルの属性を変えることなく複数のファイルをディレクトリごとアップロードできるので便利です。

簡単な使い方は次のようになります。"-"が標準入出力を表します。

tar cvf - [ファイル/ディレクトリ名] | ssh [ユーザ名]@[サーバ名] "cd [転送先のディレクトリ]; tar xvf -"

例えば、source1.php, source2.phpというファイルを含むsourceというディレクトリを、www.awaresoft.jpのユーザkuraのホームディレクトリの下にあるtartestというディレクトリにアップロードする場合は次のようになります。

$ tar cvf - source | ssh 
 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
  "cd tartest; tar xvf -"
source/
source/source2.php
source/source1.php

 このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください
 's password: [パスワードを入力]
x source/
x source/source2.php
x source/source1.php

下の方の"x"がついている行は、サーバ側でファイルが展開されたことを表します。

今どきCUIを使う機会も減ってきていますが、慣れてしまえばGUIを使うよりもずっと簡単になることもありますね。

最終更新日: 2011年 6月 27日(月曜日) 01:46
くらち たかよし

くらち たかよし

モバイル・Webアプリ作家。最近は主にiPhoneアプリ制作を手がける。企画から、UIデザイン、設計、実装、テスト、多言語対応、ユーザーサポートまでを1人〜数人の個人で行う全人的開発手法の確立を目指している。

使う言語はObjective-C, C++, C#, Java, PHPなど。Web関連で使うものはCakePHP, MySQL, Joomla! CMSなど。デザインはシロウトながらPhotoshopとIllustratorをなんとかがんばって使う。

場所や時間に縛られない、インターネット時代の新しい働き方、自由な生き方を模索中。海外移住、低予算&低リスク起業、キャリアデザイン、心理学などにも興味あり。

Web: awaresoft.jp/