6.6. Copier des fichiers vers ou depuis un conteneur OpenShift Container Platform
Vous pouvez utiliser l'interface de commande pour copier des fichiers locaux vers ou depuis un répertoire distant dans un conteneur à l'aide de la commande rsync
.
6.6.1. Comprendre comment copier des fichiers
La commande oc rsync
, ou synchronisation à distance, est un outil utile pour copier des archives de bases de données vers et depuis vos modules à des fins de sauvegarde et de restauration. Vous pouvez également utiliser oc rsync
pour copier les modifications du code source dans un pod en cours d'exécution pour le débogage du développement, lorsque le pod en cours d'exécution prend en charge le rechargement à chaud des fichiers source.
$ oc rsync <source> <destination> [-c <container>]
6.6.1.1. Requirements
- Spécification de la source de la copie
-
L'argument source de la commande
oc rsync
doit pointer vers un répertoire local ou un répertoire pod. Les fichiers individuels ne sont pas pris en charge.
Lors de la spécification d'un répertoire de pods, le nom du répertoire doit être préfixé par le nom du pod :
<pod name>:<dir>
Si le nom du répertoire se termine par un séparateur de chemin (/
), seul le contenu du répertoire est copié vers la destination. Sinon, le répertoire et son contenu sont copiés vers la destination.
- Spécification de la destination de la copie
-
L'argument de destination de la commande
oc rsync
doit pointer vers un répertoire. Si le répertoire n'existe pas, mais quersync
est utilisé pour la copie, le répertoire est créé pour vous. - Suppression de fichiers à la destination
-
L'option
--delete
peut être utilisée pour supprimer tous les fichiers du répertoire distant qui ne se trouvent pas dans le répertoire local. - Synchronisation continue en cas de changement de fichier
-
L'utilisation de l'option
--watch
permet à la commande de surveiller le chemin d'accès à la source pour toute modification du système de fichiers et de synchroniser les modifications lorsqu'elles se produisent. Avec cet argument, la commande s'exécute indéfiniment.
La synchronisation s'effectue après de courtes périodes de silence afin de s'assurer qu'un système de fichiers en évolution rapide n'entraîne pas d'appels de synchronisation continus.
Lorsque vous utilisez l'option --watch
, le comportement est effectivement le même que l'invocation manuelle répétée de oc rsync
, y compris tous les arguments normalement transmis à oc rsync
. Par conséquent, vous pouvez contrôler le comportement via les mêmes drapeaux que ceux utilisés pour les invocations manuelles de oc rsync
, tels que --delete
.
6.6.2. Copier des fichiers vers et depuis des conteneurs
La prise en charge de la copie de fichiers locaux vers ou depuis un conteneur est intégrée à l'interface de gestion.
Conditions préalables
Lorsque vous travaillez avec oc rsync
, tenez compte des points suivants :
- rsync doit être installé
-
La commande
oc rsync
utilise l'outil localrsync
s'il est présent sur la machine cliente et le conteneur distant.
Si rsync
n'est pas trouvé localement ou dans le conteneur distant, une archive tar est créée localement et envoyée au conteneur où l'utilitaire tar est utilisé pour extraire les fichiers. Si tar n'est pas disponible dans le conteneur distant, la copie échoue.
La méthode de copie tar n'offre pas les mêmes fonctionnalités que oc rsync
. Par exemple, oc rsync
crée le répertoire de destination s'il n'existe pas et n'envoie que les fichiers qui sont différents entre la source et la destination.
Sous Windows, le client cwRsync
doit être installé et ajouté au PATH pour être utilisé avec la commande oc rsync
.
Procédure
Pour copier un répertoire local dans un répertoire pod :
$ oc rsync <local-dir> <pod-name>:/<remote-dir> -c <container-name>
Par exemple :
$ oc rsync /home/user/source devpod1234:/src -c user-container
Pour copier un répertoire pod dans un répertoire local :
$ oc rsync devpod1234:/src /home/user/source
Exemple de sortie
$ oc rsync devpod1234:/src/status.txt /home/user/
6.6.3. Utiliser les fonctions avancées de Rsync
La commande oc rsync
propose moins d'options de ligne de commande que la commande standard rsync
. Si vous souhaitez utiliser une option de la ligne de commande rsync
standard qui n'est pas disponible dans oc rsync
, par exemple l'option --exclude-from=FILE
, il est possible d'utiliser l'option --rsh
(-e
) ou la variable d'environnement RSYNC_RSH
de la commande rsync
standard comme solution de contournement, comme suit :
$ rsync --rsh='oc rsh' --exclude-from=FILE SRC POD:DEST
ou :
Exporter la variable RSYNC_RSH
:
$ export RSYNC_RSH='oc rsh'
Exécutez ensuite la commande rsync :
$ rsync --exclude-from=FILE SRC POD:DEST
Les deux exemples ci-dessus configurent le logiciel standard rsync
pour qu'il utilise oc rsh
comme programme shell distant afin de lui permettre de se connecter au pod distant, et constituent une alternative à l'exécution de oc rsync
.