scpとrsyncの利用

Unix利用時に、離れたホスト間でファイルを交換する場合は scpコマンドを利用します。コピーしたいファイルが多く、 なおかつ頻繁に更新するディレクトリを一気にコピーする場合には rsyncコマンドが便利です。

scp

scpコマンドは、

scp [オプション] ファイル(群) [ユーザ名@]ホスト:[ディレクトリ]

または、

scp [オプション] [ユーザ名@]ホスト:ファイル(群) ディレクトリ

のように起動します。大括弧 [ ] 内のものは省略可能です。

使用例

基本的な使い方をいくつか示しましょう。以下の例の Port# にはTTSSHのときと同じ番号を指定します。

なお、scpも sshを楽にする設定 が活きるので、~/.ssh/config ファイルに

Host roy
  HostName roy.e.koeki-u.ac.jp
  Port ポート番号
  User ユーザ名

と書いておけば、ポート番号とユーザ名指定を省略し、

scp ファイル ホスト:ディレクトリ

だけでコピーすることができます。

scpのオプション

scpコマンドに利用できるオプションには以下のものがありま す。

その他のオプションについては、man scp で知ることができま す。

rsync

rsync は、離れた間で、更新のあったファイルだけを まとめてコピーするなどのことができます。

基本的な使い方は

rsync [オプション] ファイル(群) [ユーザ名@]ホスト:[ディレクトリ]

または、

rsync [オプション] [ユーザ名@]ホスト:ファイル(群) ディレクトリ

のように起動します。大括弧 [ ] 内のものは省略可能です。

rsyncの使用例

いくつか使用例を示します。

rsyncコマンドで使用するsshコマンドは、環境変数 RSYNC_RSH に埋め込んでおくことができます。コマンドラインで

% RSYNC_RSH='ssh -p Port#'
% export RSYNC_RSH

Port# の部分は接続説明書に書いてあるSSHのポート番号 を書きます。

export RSYNC_RSH='ssh Port#' だけで 良い場合があります。また、使用しているシェルが csh か tcsh のときは setenv RSYNC_RSH "ssh Port#" とします。

ただし、roy以外のホストでは、通常SSHポート番号は22なので、 ほかのホストに対してrsyncを使う場合を考えて、 環境変数 RSYNC_RSH には

% RSYNC_RSH=ssh
% export RSYNC_RSH

とだけ定義しておいて、

~/.ssh/config ファイルに

Host roy
  HostName roy.e.koeki-u.ac.jp
  Port ポート番号
  User ユーザ名

と書いておき、rsyncするときのホスト名を roy と 指定するほうが良いでしょう。


roy.e.koeki-u.ac.jp