この章では,オペレーティング・システムのコマンドを使用して,次のタスクを実行する方法を説明します。
ローカル・ホストとリモート・ホストの間でファイルをコピーする (12.1 節)。
ローカル・ホストとリモート・ホストの間でディレクトリ全体 (サブディレクトリを含む) のファイルをコピーする (12.2 節)。
2 つのリモート・ホスト間でファイルをコピーする (12.3 節)。
ファイルをコピーするためにリモート・ホストのホスト名またはオンライン状態を確認する場合は,
第 10 章で説明した
finger
,who
,rwho
,ping
,または
ruptime
コマンドを使用してください。
この章で説明する方法の他にも,第 14 章で,UNIX 間コピー・プログラム (UUCP) を使用して,リモート・システム間でファイルをコピーする方法について説明します。
注意
リモート・ホストのセキュリティ機能によって,ファイルをコピーできるかどうかが決まります。 ファイルをコピーできない場合は,システム管理者に問い合わせてください。
12.1 ローカル・ホストとリモート・ホスト間でのファイルのコピー
次のコマンドを使用して,ローカル・ホストとリモート・ホストの間でファイルをコピーすることができます。
rcp
コマンド
12.1.1 項で説明します。
ディレクトリ全体のファイルをコピーする場合は,12.2 節を参照してください。
Tru64 UNIX オペレーティング・システムを実行しているホストは,他の UNIX ベースのオペレーティング・システムを実行しているホストとの間で,rcp
コマンドを使用することができます。
ftp
コマンド
12.1.2 項で説明します。
ftp
を使用すると,ftp
をサポートするオペレーティング・システムを使用しているホスト間で,ファイルをコピーすることができます。
mailx
コマンド
12.1.3 項で説明します。
write
コマンド
12.1.4 項で説明します。
12.1.1 rcp を使用したローカル・ホストとリモート・ホスト間でのファイルのコピー
rcp
を使用して,ローカル・ホストからリモート・ホストに,またはリモート・ホストからローカル・ホストにファイルをコピーする際には,
次の
rcp
構文のように,最初にコピー元のファイルを指定し,次に,コピー先のファイルを指定します。
rcp
[ option...
]
localfile hostname:file
localfile
変数には,コピーするローカル・ファイルを指定します。
hostname:file
変数については,hostname
にリモート・ホストを指定し,コロン (:
) に続けて,file
にローカル・ファイルのコピー先のファイル名を指定します。
次の例では,rcp
を使用して,ローカル・ファイル
YTD_sum
を,ローカル・ホストの
/usr/reports
ディレクトリから,リモート・ホスト
moon
の
/usr/acct
ディレクトリの
year-end
ファイルにコピーします。
% rcp /usr/reports/YTD_sum moon:/usr/acct/year-end
ローカル・ホスト上のファイルをリモート・ホストのユーザへ転送することもできます。
次の例では,ファイル
YTD_sum
を,ローカル・ホスト上の
/usr/reports
ディレクトリから,
リモート・ホスト
moon
上の
jones
というユーザのホーム・ディレクトリの
acct_summaries
ファイルにコピーします。
% rcp /usr/reports/YTD_sum jones@moon:acct_summaries
前述の各例のように使用すると,rcp
コマンドは,元のファイルから作成したファイルに,新しい作成日と作成時間を割り当てます。
また,rcp
コマンドは,新しく作成したファイルが置かれているホストまたはユーザ・ディレクトリに応じて,ファイルの読み取り,書き込み,実行の許可も割り当てます。
コピーした元のファイルの作成日時およびアクセス許可モードを新しいファイルでも変えたくない場合,次の例のように
-p
オプションを指定することにより,YTD_sum
の元の作成日時およびファイル・アクセス許可を
year-end
ファイルに継承することができます。
% rcp -p /usr/reports/YTD_sum moon:/usr/acct/year-end
-p
オプションを指定しない場合には,新しい作成日時が割り当てられ,ファイルのアクセス許可は,システム管理者がリモート・ホスト
moon
に割り当てた省略時の値に設定されます。
次の例では,-p
オプションにより,元のファイル
YTD_sum
と同じファイル作成日時およびアクセス許可が
acct_summaries
ファイルに継承されます。
% rcp -p /usr/reports/YTD_sum jones@moon:acct_summaries
-p
オプションを指定しない場合は,新しい日付と時間が割り当てられますが,前の例とは異なり,ファイルのアクセス許可は,
ユーザ
jones
が
.login
または
.profile
ファイル内に
umask
コマンドを使用して省略時の値を設定している場合には,その値に設定されます。
umask
が
.login
または
.profile
ファイルに設定されていない場合は,
ファイルのアクセス許可モードは,リモート・ホスト
moon
の省略時の値になります。
umask
の設定についての詳細は,
umask
(1)
リモート・ホストからローカル・ホストにファイルをコピーする場合,次のような
rcp
構文を使用してください。
localfile
がコピー先ファイルであるために,コマンド行の最後に
localfile
が記述されている点以外,コマンド構文はローカル・ファイルをリモート・ホストにコピーする場合と同様です。
rcp
[ option...
]
hostname:file localfile
12.1.2 ftp を使用したローカル・ホストとリモート・ホスト間でのファイルのコピー
ftp
コマンドはファイル転送プロトコル (FTP) へのインタフェースです。
このコマンドには,ファイルのコピーというメイン・タスクをサポートする
拡張サブコマンド (表 12-1,表 12-2,および表 12-3
で説明) があります。
ftp
コマンドを使用すると,
ftp
をサポートする 2 つのホスト間で,ファイルをコピーすることができます。
ftp
コマンド・オプションの詳細については,
ftp
(1)
FTP を使用してファイルをコピーするには,次の手順で行います。
リモート・ホスト上にセッションを確立する。
ファイルをコピーする。
セッションを切断する。
ftp
コマンドの構文は,次のとおりです。
ftp
host_name
host_name
変数には,目的のホスト名を指定します。
コマンド行に
host_name
を指定しない場合は,
ftp
サブコマンド
open
(表 12-1
で説明) を使用して,リモート・ホストと接続しなければなりません。
ftp
と入力すると,ftp>
プロンプトが表示されます。
これで,リモート・ホストにログインできています。
ここで,ftp
サブコマンドを使用して,次のタスクを実行することができます。
ファイルをコピーする (表 12-1 参照)。
ローカル・ファイルをリモート・ファイルに追加する (表 12-1 参照)。
複数のファイルをコピーする (表 12-1 参照)。
リモート・ディレクトリの内容をリストする (表 12-2 参照)。
リモート・ホスト上の現在のディレクトリを変更する (表 12-2 参照)。
リモート・ホスト上のファイルを削除する (表 12-2 参照)。
ローカル・シェルにエスケープしてコマンドを実行する (表 12-3 参照)。
例 12-1
に,ローカル・ホスト
earth
上のユーザ
alice
がリモート・ホスト
moon
にログインし,
ftp
サブコマンドを使用して,現在の作業ディレクトリのチェック,その内容の一覧表示,バイナリ・ファイルのコピー,およびセッションの終了を行う方法を示します。
例 12-1: ftp を使用したファイルのコピー
earth% ftp moon [1] Connected to moon 220 moon FTP server (Version . . .) ready [2] Name(moon:alice): [Return] [3] Password: [4] 230 User alice logged in [5] ftp> binary [6] 200 Type set to I ftp> pwd [7] 257 "u/alice" is current directory ftp> ls -l [8] 200 PORT command successful. 150 Opening data connection for /bin/ls (192.9.200.1,1026) (0 bytes) total 2 -rw-r--r-- 1 alice system 101 Jun 5 10:03 file1 -rw-r--r-- 1 alice system 171 Jun 5 10:03 file2 -rw-r--r-- 1 alice system 1201 Jun 5 10:03 sales ftp> get sales newsales [9] 200 PORT command successful. 150 Opening data connection for sales (192.9.200.1,1029) (1201 bytes) 226 Transfer complete. local:sales remote:newsales ftp> quit [10] 221 Goodbye. earth%
ユーザ
alice
は,ローカル・ホスト
earth
のプロンプトから
ftp
コマンドを入力して,リモート・ホスト
moon
との
ftp
セッションを開始します。
[例に戻る]
接続を確認するメッセージが,ローカル・ホスト上に表示されます。 [例に戻る]
ユーザ
alice
は,自分のログイン名がリモート・ホスト上のログイン名と一致しているので,プロンプトに対して Return キーを押します。
[例に戻る]
Password:
プロンプトに対し,ユーザ
alice
は,パスワードを正しく入力しますが,パスワードは表示されません。
[例に戻る]
リモート・ホストへのログインが確認され,ftp>
プロンプトが表示されて,リモート・ホストとの
ftp
セッションが確立されます。
[例に戻る]
ユーザ
alice
が
ftp>
プロンプトに対し
binary
サブコマンドを入力して,ファイル転送タイプをバイナリに設定すると,FTP によって,200 Type set to I
という確認のメッセージが表示されます。
[例に戻る]
ユーザ
alice
は,pwd
サブコマンドを入力して,現在の作業ディレクトリを確認すると,FTP によって,u/alice is current directory
というメッセージが表示されます。
[例に戻る]
ユーザ
alice
は,ls -l
サブコマンドを入力して,現在の作業ディレクトリに入っている,file1
,file2
,および
sales
を一覧表示します。
[例に戻る]
ユーザ
alice
は,get
サブコマンドを使用して,ファイル
sales
をリモート・ホストからローカル・ホスト上の
newsales
というファイルにコピーします。
[例に戻る]
ユーザ
alice
は,quit
サブコマンドを入力して
ftp
セッションを終了し,ローカルのシステム・プロンプトに戻ります。
[例に戻る]
注意
ファイル転送は,リモート・ホスト上のセキュリティ機能に依存します。 ファイルをコピーできない場合は,システム管理者に問い合わせてください。
表 12-1
に,ファイルをコピーしたり,ftp
を終了させる
ftp
サブコマンドを示します。
ここで説明する
binary
,get
,および
quit
サブコマンドは,例 12-1
で使用されています。
表 12-1: ホストへの接続とファイルのコピーを行う ftp サブコマンド
サブコマンド | 説明 |
account
[password] |
Tru64 UNIX リモート・ホストから,そのホストのリソースにアクセスするために必要なパスワードを送信する。 password を指定しなければ,ユーザはパスワードの入力を要求される。 パスワードは画面上には表示されない。 |
ascii |
ファイル転送タイプを省略時の値であるネットワーク ASCII に設定する。 たとえば,PostScript ファイルは ASCII ファイルである。 |
binary |
ファイル転送タイプをバイナリ・イメージに設定する。 これは,非 ASCII ファイルをコピーするときに必要である。 たとえば,実行可能ファイルは非 ASCII ファイルである。 |
bye |
ファイル・コピー・セッションを終了して,FTP を出る。
quit
と同じ。 |
get
remfile locfile |
リモート・ファイル
remfile
をローカル・ホストのファイル
locfile
にコピーする。
locfile
を指定しない場合は,リモート・ファイル名が,ローカル・ファイル名にそのまま使用される。
runique
サブコマンドも参照。 |
mget
remfile
[locfile] |
1 つまたは複数の指定ファイル (remfile) を,リモート・ホストからローカル・ホストの現在のディレクトリの locfile にコピーする。 ワイルドカードや,パターン照合を行うメタキャラクタもサポートされている。 |
mput
locfile
[remfile] |
1 つまたは複数の指定ファイル (locfile) を,ローカル・ホストからリモート・ホスト上の
remfile
にコピーする。
ワイルドカードや,パターン照合を行うメタキャラクタもサポートされている。 |
open
host
[port] |
host
をコマンド行で指定しなかった場合に,そのホストとの接続を確立する。
port
を指定すると,FTP はそのポートでサーバとの接続を試みる。
autologin
機能が設定されている場合には (省略時の設定),FTP はユーザをリモート・ホストへログインさせようとする。 |
put
locfile
[remfile] |
ローカル・ホスト上のファイル
locfile
を,リモート・ホスト上の
remfile
にコピーする。
remfile
を指定しない場合,FTP はリモート・ファイル名としてローカル・ファイル名を使用する。
sunique
サブコマンドも参照。 |
quit |
ファイル・コピー・セッションを終了して,FTP を出る。bye
と同じ。 |
recv
remfile
[locfile] |
リモート・ホスト・ファイル
remfile
を,ローカル・ホストのファイル
locfile
にコピーする。
recv
は,get
と同様に動作する。 |
runique |
すでに
|
send
locfile
[remfile] |
ローカル・ファイル
locfile
を,リモート・ホストの
remfile
ファイルに格納する。
send
は,put
と同様に動作する。 |
sunique |
put
処理時に,リモートのコピー先ファイルに対して一意のファイル名を作成するかどうかの切り替えを行う。
この一意のリモート・ファイル名機能がオフ (省略時の設定) の場合,FTP は,リモート・ファイルを重ね書きする。
オンの場合は,リモートのコピー先ファイルに指定したものと同じ名前のリモート・ファイルがあれば,runique
と同様に,リモートの
FTP server
が,リモートのコピー先ファイルの名前を修正する。
ただし,FTP server
が,リモート・ホスト上でサポートされていなければならない。 |
表 12-2
に,ファイルをコピーする前に,必要であれば,現在のディレクトリの確認,変更,作成,あるいはディレクトリ内のファイルの一覧表示を行う
ftp
サブコマンドについて説明します。
ここで説明する
pwd
および
ls
サブコマンドは,例 12-1
で使用されています。
表 12-2: ディレクトリおよびファイルを操作するための ftp サブコマンド
サブコマンド | 説明 |
cd
remotedir |
リモート・ホスト上の作業ディレクトリを remotedir に変更する。 |
cdup |
リモート・ホスト上の作業ディレクトリを現在のディレクトリの親ディレクトリに変更する。 |
delete
remfile |
指定したリモート・ファイルを削除する。 |
dir [remdir] [locfile] |
リモート・ディレクトリ remdir にあるファイルのリストを,ローカル・ホスト上のファイル locfile に書き込む。 |
lcd [directory] |
ローカル・ホスト上の作業ディレクトリを変更する。 directory を指定しない場合は,ユーザのホーム・ディレクトリに移動する。 |
ls [remdir] [locfile] |
リモート・ディレクトリ remdir の簡潔なフォーマットの一覧表示を,ローカル・ホスト上のファイル locfile に書き込む。 |
mkdir [remdir] |
指定したディレクトリをリモート・ホストに作成する。 |
pwd |
リモート・ホストの現在のディレクトリ名を表示する。 |
rename
from to |
リモート・ホスト上のファイルの名前を変更する。 |
rmdir
remdir |
リモート・ホストからリモート・ディレクトリ remdir を削除する。 |
表 12-3
に,直接,または
ftp
内からシェルを呼び出すことによって,ヘルプおよび状態情報を提供する
ftp
サブコマンドについて説明します。
表 12-3: ヘルプおよび状態情報を得るための ftp サブコマンド
サブコマンド | 説明 |
!command
[option] |
ローカル・ホスト上に対話式のシェルを呼び出す。 |
? |
subcommand
についてのヘルプ・メッセージを表示する。
subcommand
を指定しない場合,FTP は利用できるサブコマンドの一覧を表示する。
help
サブコマンドも参照。 |
help [subcommand] |
ヘルプ情報を表示する。
?
サブコマンドも参照。 |
status |
現在の転送モード (ASCII またはバイナリ),接続状態,タイムアウト値などを含む,ftp
の現在の状態を表示する。 |
verbose |
詳細 (verbose) モードを切り替える。
詳細モードがオン (省略時の設定) の場合,FTP は,リモートの
FTP server
から受け取るすべての応答を表示する。
また,終了したすべてのファイル転送の統計情報も表示する。 |
ファイルをコピーする別の方法として,簡易ファイル転送プロトコル (TFTP) へのインタフェースである
tftp
コマンドがあります。
ftp
とは異なり,ファイルのコピー以外のタスクを実行するためのサブコマンドはありません。
スーパユーザまたはオペレーティング・システムのインストール担当者のタスク (たとえば,オペレーティング・システムのカーネルのコピーなど) を実行する場合にだけ使用してください。
これは,リモートの
tftp
サーバ・デーモン
tftpd
へのファイル・アクセス権が制限されているためです。
詳細は,
tftp
(1)12.1.3 mailx を使用したローカル・ホストとリモート・ホスト間での ASCII ファイルのコピー
mailx
コマンドは,第 11 章で説明しているように,メール・メッセージを送受信するために最も頻繁に使用されますが,
ASCII ファイルをローカル・ホストまたはリモート・ホストにコピーすることもできます。
次の構文で示すように,左山カッコのリダイレクション記号 (<
) を使用すると,mailx
により,ASCII ファイルを 1 人または複数のユーザにコピーすることができます。
mailx
[ option...
]
recipient...
<
filename
recipient
変数には,ファイル
filename
の送り先である 1 人または複数のユーザ名,あるいは
mailx
の別名を指定します。
たとえば,ファイル
schedule
を複数のユーザに送信するには,次のように,メッセージの表題を示す
-s
オプションを指定して,mailx
コマンドを使用します。
% mailx -s "games" tom jeff craig jim ken < schedule
Wombats というチームの 5 人のメンバに対して
wombats
というメール別名を作成する (11.6.1 項参照) と,次に示すように,ファイルをその別名に送信することができます。
% mailx -s "games" wombats < schedule
12.1.4 write を使用したローカル・ホストとリモート・ホスト間でのファイルのコピー
write
コマンドは,11.8 節で説明しているように,他のユーザにメッセージを書き込むために最もよく使用されますが,ローカル・ホストまたはリモート・ホストにファイルをコピーすることもできます。
write
とタイプした後に,受信者のユーザ名,左山カッコのリダイレクション記号 (<
),および送信するファイル名を入力してください。
たとえば,現在のディレクトリにある
letter
という名前のファイルをユーザ
maria
に送信するには,ホストのプロンプトで次のコマンドを入力します。
% write maria < letter
12.2 ローカル・ホストとリモート・ホスト間でのディレクトリのコピー
-r
オプションを指定して
rcp
コマンドを使用すると,ファイルの入っているディレクトリ全体 (つまり,すべてのサブディレクトリ内のファイルおよびディレクトリも含む) を,ローカル・ホストとリモート・ホストの間で再帰的にコピーすることができます。
ローカル・ホストからリモート・ホストにディレクトリを再帰的にコピーするには,次の構文を使用します。
rcp -r
localdirectory hostname:directory
localdirectory 変数には,再帰的にコピーするローカル・ディレクトリを指定します。 hostname:directory 変数については,hostname にリモート・ホストを指定し,コロンに続けて,directory にローカル・ディレクトリのコピー先のリモート・ディレクトリ名を指定します。
次の例では,rcp -r
を使用して,/usr/reports
ディレクトリを,ローカル・ホストからリモート・ホスト
moon
上の
/user/status/newdata
ディレクトリに再帰的にコピーします。
% rcp -r /usr/reports moon:/user/status/newdata
ローカル・ホスト上のディレクトリを,リモート・ホストのユーザに再帰的にコピーすることもできます。
次の例に,ローカル・ホスト上のディレクトリ
/usr/reports
を,リモート・ホスト
moon
のユーザ
smith
のホーム・ディレクトリにある
/user/status/newdata
というディレクトリにコピーする方法を示します。
この例では,12.1.1 項で説明しているように,
-p
オプションを使用して,新しいディレクトリにコピーされるディレクトリおよびファイルに元の作成日時とアクセス許可モードを残しています。
% rcp -p -r /usr/reports smith@moon:/user/status/newdata
リモート・ホストからローカル・ホストにディレクトリを再帰的にコピーする
には,次に示すような
rcp
構文に従ってください。
localdirectory
がコピー先ファイルであるためにコマンド行の最後に記述されている以外は,このコマンドの構文は,ディレクトリをローカル・ホストからリモート・ホストに再帰的にコピーする場合と同じです。
rcp -r
hostname:directory localdirectory
ローカル・ホストから
rcp
を使用して,あるリモート・ホスト上のファイルを別のリモート・ホスト上のファイルにコピーすることができます。
これは,次の
rcp
構文を使用して行います。
rcp
remhost1:filesend remhost2:file-recv
remhost1
変数には,送信するファイルのあるリモート・ホストを指定します。
この後ろにコロン (:
),および送信するファイル
filesend
が続きます。
remhost2:file-recv
については,remhost2
にコピー先のリモート・ホストを指定し,file-recv
に
remhost1
からのファイルのコピー先であるファイル名を指定します。
file-recv
にディレクトリ名だけを (次の例に示すように) 指定すると,filesend
は,同じファイル名でそのディレクトリにコピーされます。
次の例では,rcp
を使用して,spark
ファイルを,
リモート・ホスト
flint
上の
/u/cave/fred
ディレクトリから,リモート・ホスト
stone
上の
/u/hut/barney
ディレクトリにコピーしています。
% rcp flint:/u/cave/fred/spark stone:/u/hut/barney