ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris のシステム管理 (ネットワークサービス) Oracle Solaris 11 Information Library (日本語) |
パート II ネットワークファイルシステムへのアクセス (トピック)
6. ネットワークファイルシステムへのアクセス (リファレンス)
rcp コマンドは、ローカルシステムとリモートシステム間、または 2 台のリモートシステム間でファイルやディレクトリをコピーします。このコマンドは、リモートシステムから (rlogin コマンドでログイン後に)、またはローカルシステムから (リモートシステムにログインせずに) 使用できます。
rcp を使用すると、次のリモートコピー操作を実行できます。
自分のシステムからリモートシステムにファイルやディレクトリをコピーする
リモートシステムからローカルシステムにファイルやディレクトリをコピーする
ローカルシステムを経由したリモートシステム間でファイルやディレクトリをコピーする
オートマウンタを実行中の場合は、これらのリモート操作を cp コマンドで実行できます。ただし、cp の範囲は、オートマウンタにより作成された仮想ファイルシステムと、ユーザーのホームディレクトリから相対的に指定できる操作に制限されます。rcp はそのような制限を受けずに同じ操作を実行するので、ここでは rcp を使用する場合に限定して説明します。
システム間でファイルやディレクトリをコピーするには、ログインしてファイルをコピーする許可を持っていなければなりません。
注意 - cp コマンドと rcp コマンドではともに、警告が表示されずにファイルが上書きされることがあります。コマンドを実行する前に、ファイル名が正しいかどうかを確認してください。 |
C シェル内で rcp コマンドを使用すると、絶対パス名または相対パス名を使用して、コピー元 (コピーするファイルやディレクトリ) とコピー先 (ファイルやディレクトリをコピーする場所) を指定できます。
|
絶対パス名は、特定のシステムにマウントされているファイルやディレクトリを表します。上記の例で、第 1 の絶対パス名は mars システム上のファイル (myfile.txt) を表します。相対パス名は、ファイルやディレクトリがある位置を、ユーザーのホームディレクトリからの相対パスで表します。上記の例で、相対パス名は絶対パスと同じ myfile.txt を表しますが、jones のホームディレクトリを示すために「~」(チルド記号) を使用しています。
~ = mars:/home/jones
上記の 2 行目の例は、リモートログイン後の絶対パス名と相対パス名を示しています。相対パス名では明確な違いは見られません。しかし、リモートログイン操作により、jones のホームディレクトリがローカルシステム上にマウントされた (ローカルユーザーのホームディレクトリと並列に存在する) ので、絶対パス名ではシステム名 mars を指定する必要はありません。リモートログイン操作によって別のユーザーのホームディレクトリがどのようにマウントされるかについては、「リモートログイン後の処理」を参照してください。
次の表に、C シェルが認識する絶対パス名と相対パス名の例を示します。このサンプルでは、次の用語を使用します。
表 29-4 ディレクトリ名とファイル名に使用できる構文
|
少なくとも、コピー元システム上で読み取り権を持ち、コピー先システム上で書き込み権を持っているべきです。
コピー元またはコピー先のパスがわからない場合は、まず rlogin コマンドを使用してリモートシステムにログインします (「リモートシステムにログインする方法 (rlogin)」を参照)。次に、そのパスが見つかるまでリモートシステム上を移動します。その後は、ログアウトしなくても次の手順を実行できます。
$ rcp [-r] source-file|directory target-file|directory
(オプションなし) コピー元からコピー先にファイルを 1 つコピーする
コピー元からコピー先にディレクトリをコピーする
この構文は、リモートシステムとローカルシステムのどちらにログインするかに関係なく適用されます。表 29-4 で説明したとおり、ファイルやディレクトリのパス名のみをこのあとで示す例のように変更します。
「~」と「.」を使用すると、ローカルのファイル名やディレクトリ名のパス部分を指定できます。ただし、「~」はリモートシステムではなく現在のユーザーに適用されることと、「.」はログイン先のシステムに適用されることに注意してください。この 2 つの記号については、表 29-4 を参照してください。
例 29-8 rcp を使用してリモートファイルをローカルシステムにコピーする
次の例では、rcp はファイル letter.doc をリモートシステム pluto の /home/jones ディレクトリから、ローカルシステム earth 上の作業用ディレクトリ (/home/smith) にコピーします。
earth(/home/smith): rcp pluto:/home/jones/letter.doc .
この例では、リモートログインをしないで rcp 操作を実行しています。コマンド行の最後にある「.」記号は、リモートシステムではなく、ローカルシステムを表します。
コピー先ディレクトリもローカルユーザーのホームディレクトリなので、「~」記号で指定することもできます。
例 29-9 rlogin と rcp を使用してリモートファイルをローカルシステムにコピーする
次の例では、rlogin コマンドの実行後に rcp 操作が実行され、リモートシステムからローカルシステムにファイルをコピーしています。操作の流れは前述の例と同じですが、リモートログインによりパスが変更になります。
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp letter.doc ~
コマンド行の最後に「.」記号を使用するのは、この例では不適切です。リモートログインが行われているので、「.」記号はリモートシステムを指し、実際には rcp に重複したファイルを作成させることになります。ただし、「~」は、リモートシステムにログインするときにも現在のユーザーのホームディレクトリを指します。
例 29-10 rcp を使用してローカルファイルをリモートシステムにコピーする
次の例で、rcp はファイル notice.doc をローカルシステム earth のホームディレクトリ (/home/smith) からリモートシステム pluto の /home/jones ディレクトリにコピーします。
earth(/home/smith): rcp notice.doc pluto:/home/jones
リモートファイル名が指定されていないので、ファイル notice.doc は /home/jones ディレクトリに同じ名前でコピーされます。
次の例では、前の例と同じように rcp 操作が行われますが、rcp はローカルシステム上の別の作業用ディレクトリ (/tmp) で入力されます。現在のユーザーのホームディレクトリを指すために「~」記号が使われているので注意してください。
earth(/tmp): rcp ~/notice.doc pluto:/home/jones
例 29-11 rlogin と rcp を使用してローカルファイルをリモートシステムにコピーする
次の例では、rlogin コマンドの実行後に rcp 操作が実行され、ローカルファイルをリモートディレクトリにコピーしています。操作の流れは前に示した例と同じですが、リモートログインによりパスが変更になります。
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp ~/notice.doc .
現在のユーザーのホームディレクトリはローカルシステム上にありますが、「~」記号によりそのディレクトリが表されます。ユーザーはリモートシステムにログインしているので、「.」記号はリモートシステム上の作業用ディレクトリを表します。次の構文を使用しても同じ操作を実行します。
pluto(/home/jones): rcp earth:/home/smith/notice.doc /home/jones