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