7.6. OpenShift Container Platform コンテナーへのファイルのコピー、またはコンテナーからのファイルのコピー
				CLI を使用して、rsync コマンドでコンテナーのリモートディレクトリーにローカルファイルをコピーするか、そのディレクトリーからローカルファイルをコピーすることができます。
			
7.6.1. ファイルをコピーする方法について
					oc rsync コマンドまたは remote sync は、バックアップと復元を実行するためにデータベースアーカイブを Pod にコピー、または Pod からコピーするのに役立つツールです。また、実行中の Pod がソースファイルのホットリロードをサポートする場合に、ソースコードの変更を開発のデバッグ目的で実行中の Pod にコピーするためにも、oc rsync を使用できます。
				
oc rsync <source> <destination> [-c <container>]
$ oc rsync <source> <destination> [-c <container>]7.6.1.1. 要件
- Copy Source の指定
- oc rsyncコマンドのソース引数はローカルディレクトリーまた Pod ディレクトリーのいずれかを示す必要があります。個々のファイルはサポートされていません。- Pod ディレクトリーを指定する場合、ディレクトリー名の前に Pod 名を付ける必要があります。 - <pod name>:<dir> - <pod name>:<dir>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ディレクトリー名がパスセパレーター ( - /) で終了する場合、ディレクトリーの内容のみが宛先にコピーされます。それ以外の場合は、ディレクトリーとその内容が宛先にコピーされます。
- Copy Destination の指定
- 
									oc rsyncコマンドの宛先引数はディレクトリーを参照する必要があります。ディレクトリーが存在せず、rsyncがコピーに使用される場合、ディレクトリーが作成されます。
- 宛先でのファイルの削除
- 
									--deleteフラグは、ローカルディレクトリーにないリモートディレクトリーにあるファイルを削除するために使用できます。
- ファイル変更に関する継続的な同期
- --watchオプションを使用すると、コマンドはソースパスでファイルシステムの変更をモニターし、変更が生じるとそれらを同期します。この引数を指定すると、コマンドは無期限に実行されます。- 同期は短い非表示期間の後に実行され、急速に変化するファイルシステムによって同期呼び出しが継続的に実行されないようにします。 - --watchオプションを使用する場合、動作は通常- oc rsyncに渡される引数の使用を含め- oc rsyncを繰り返し手動で起動する場合と同様になります。そのため、- --deleteなどの- oc rsyncの手動の呼び出しで使用される同じフラグでこの動作を制御できます。
7.6.2. コンテナーへの/からのファイルのコピー
コンテナーへの/からのローカルファイルのコピーのサポートは CLI に組み込まれています。
前提条件
						oc rsync を使用する場合は、以下の点に注意してください。
					
- rsync がインストールされていること。 - oc rsyncコマンドは、クライアントマシンおよびリモートコンテナー上に存在する場合は、ローカルの- rsyncツールを使用。- rsyncがローカルまたはリモートコンテナー内に見つからない場合、tar アーカイブがローカルに作成され、tar ユーティリティーを使用してファイルを展開するコンテナーに送信されます。リモートコンテナーで tar を利用できない場合は、コピーに失敗します。- tar のコピー方法は - oc rsyncと同様に機能する訳ではありません。たとえば、- oc rsyncは、宛先ディレクトリーが存在しない場合にはこれを作成し、ソースと宛先間の差分のファイルのみを送信します。注記- Windows では、 - cwRsyncクライアントが- oc rsyncコマンドで使用するためにインストールされ、PATH に追加される必要があります。
手順
- ローカルディレクトリーを Pod ディレクトリーにコピーするには、以下の手順を実行します。 - oc rsync <local-dir> <pod-name>:/<remote-dir> -c <container-name> - $ oc rsync <local-dir> <pod-name>:/<remote-dir> -c <container-name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc rsync /home/user/source devpod1234:/src -c user-container - $ oc rsync /home/user/source devpod1234:/src -c user-container- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Pod ディレクトリーをローカルディレクトリーにコピーするには、以下の手順を実行します。 - oc rsync devpod1234:/src /home/user/source - $ oc rsync devpod1234:/src /home/user/source- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - oc rsync devpod1234:/src/status.txt /home/user/ - $ oc rsync devpod1234:/src/status.txt /home/user/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.6.3. 高度な Rsync 機能の使用
					oc rsync コマンドは、標準の rsync よりも利用可能なコマンドラインオプションが限られています。oc rsync で利用できない標準の rsync コマンドラインオプションを使用する必要がある場合 (例: --exclude-from=FILE オプション)、以下のように回避策として標準 rsync の --rsh (-e) オプション、または RSYNC_RSH 環境変数を使用できる場合があります。
				
rsync --rsh='oc rsh' --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
$ rsync --rsh='oc rsh' --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>または
					RSYNC_RSH 変数をエクスポートします。
				
export RSYNC_RSH='oc rsh'
$ export RSYNC_RSH='oc rsh'次に、rsync コマンドを実行します。
rsync --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
$ rsync --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
					上記の例のいずれも標準の rsync をリモートシェルプログラムとして oc rsh を使用するように設定してリモート Pod に接続できるようにします。これらは oc rsync を実行する代替方法となります。