rcp(remote copy)コマンドはネットワーク経由でシステム間のファイル転送を実行するためのユーティリティです。主にローカルとリモート環境間でデータを複製するシナリオで使用され、基本的な構文パターンは2種類存在します。単一ファイルの直接転送と、ディレクトリ階層を含む複合的なコピー操作です。
| オプション | 機能 |
|---|---|
| -r | ディレクトリ構造を再帰的に複製(ターゲットはディレクトリ必須) |
| -p | ファイル属性(タイムスタンプ/パーミッション)を保持 |
| -k realm | カスタムKerberosドメインを指定(デフォルトドメイン上書き) |
| -x | DES暗号化を有効化(パフォーマンス低下の代償にセキュリティ向上) |
リモートパスの指定はuser@host:path形式で行います。特殊文字を含むパスはシングルクォーテーションで囲む必要があります。注意点として、rcpは暗号化なしで通信するため、機密データ転送には不向きです。代替手段としてscpやsftpの利用が推奨されます。
# ローカルファイルをリモートサーバーに転送
$ rcp /var/log/app.log db-server02:'/data/backup/app_current.log'
# リモートディレクトリをローカルに再帰コピー
$ rcp -r app-server01:/opt/deploy/config /backup/staging_env
# 暗号化オプション付きのディレクトリ転送(パフォーマンス注意)
$ rcp -x -r /secure_data/ storage-cluster:'/vault/encrypted/'
実行環境の前提条件として、/etc/hostsに相手ホストのエントリが必要です。例:
192.168.10.22 app-server01
10.5.30.17 db-server02
認証設定では~/.rhostsファイルに信頼するホストとユーザーを登録しますが、これはセキュリティリスクのため現在は非推奨です。代替案としてSSH鍵認証を設定し、rcpではなくscpコマンドを使用すべきです。特にrootユーザーでの操作はシステムの脆弱性を生む可能性があるため、特権アカウントの使用を避けてください。
# 現在の作業ディレクトリをリモートに完全複製
$ rcp -p -r ./project_root web-gateway:'/var/www/vhosts/'
複数ファイルの転送時は、最後の引数が既存ディレクトリである必要があります。それ以外の場合はエラーメッセージが表示されます。パス指定に相対パスを使用する場合、リモート側のホームディレクトリが基準パスとなります。オプションの順序は機能に影響しないため、可読性を考慮して主要オプションを先に記述することを推奨します。