zion - cp
Nom
cp - Copier des fichiers.
Résumé
cp [ options ] fichier chemin cp [ options ] fichier... répertoire Options POSIX : [-fipRr] [--] Options GNU (forme courte) : [-abdfilprsuvxPR] [-S SUFFIXE ] [-V {numbered,existing,simple}] [--backup= CONTROL ] [--sparse= WHEN ] [--help] [--version] [--]
Description
cp sert à copier des fichiers (et éventuellement des répertoires). On peut aussi bien copier un fichier donné vers une destination précise que copier un ensemble de fichiers dans un répertoire. Si le dernier argument correspond à un nom de répertoire, cp copie dans ce répertoire chaque fichier indiqué en conservant le même nom. Sinon, s'il n'y a que deux fichiers indiqués, il copie le premier sur le second. Une erreur se produit si le dernier argument n'est pas un répertoire, et si plus de deux fichiers sont indiqués. Par défaut, on n'effectue pas la copie de répertoires.
Ainsi, si /a est un répertoire, alors `cp -r /a /b' copiera /a dans /b/a et /a/x dans /b/a/x au cas où /b existe déjà, mais il copiera /a sur /b et /a/x dans /b/x si /b n'existait pas encore. Enfin si /b était un fichier ordinaire la copie échouera.
Les autorisations d'accès des fichiers et des répertoires créés seront les mêmes que celles des fichiers d'origine masquées avec un ET binaire avec 0777, et modifiées par le umask de l'utilisateur (sauf si l'on invoque l'option -p). Pendant la copie récursive de répertoires, les nouveaux répertoires verront leur masque temporairement étendu par un OU binaire avec S_IRWXU (0700), afin d'autoriser le processus d'y lire, écrire et vérifier le contenu.
cp ne fait rien lorsque l'on tente de copier un fichier sur lui-même (sauf éventuellement afficher un message d'erreur). Lorsque la copie se fait sur un fichier existant, celui-ci est ouvert en utilisant `open(chemin, O_WRONLY | O_TRUNC)'. Lorsque la copie a lieu dans un nouveau fichier, on invoque `open(chemin, O_WRONLY | O_CREAT, mode)'. Si l'ouverture d'un fichier existant échoue, et si l'option -f a été invoquée, cp essaye de supprimer, avec unlink (2), le fichier existant, puis de recréer un nouveau fichier.
Options
Posix défini quatre options et demi :
-f
Effacer les fichiers cibles existants (voir ci-dessus). |
-i
Interroger l'utilisateur avant d'écraser des fichiers réguliers existants. La question est affichée sur stderr, et la réponse lue depuis stdin. |
-p
Conserver le propriétaire, le groupe, les permissions d'accès et les horodatages du fichier original. Si la conservation du propriétaire ou du groupe est impossible, les bits Set-UID et Set-GID sont effacés. L'horodatage sera quand même légèrement différent entre l'original et la copie car l'opération de copie nécessite un accès en lecture au fichier source. |
-R
Copier récursivement les répertoires, et gérer correctement les copies des fichiers spéciaux ou des FIFOs. |
-r
Copier récursivement les répertoires mais la gestion des fichiers spéciaux n'est pas définie. En fait l'option -r est autorisée, et même encouragée à se comporter comme l'option -R, toutefois le comportement (stupide) de la version GNU n'est pas interdit. |
--
Indique la fin explicite de la liste des options. |
Spécificité gnu
En général les fichiers sont écrits immédiatement après lecture de l'original, sauf si l'on utilise l'option --sparse décrite plus bas. Par défaut, cp ne copie pas les répertoires (voir l'option -r). cp refuse généralement de copier un fichier sur lui-même, avec l'exception suivante : si les options --force et --backup sont indiquées, et si les fichiers origine et copie sont identiques et se rapportent à un fichier régulier, cp effectuera une copie de sauvegarde (voir plus bas). Ceci peut servir à faire une sauvegarde d'un fichier avant de le modifier.
Options
-a, --archive
Préserver autant que possible la structure et les attributs du fichier original lors de la copie. Cette option est équivalente à -dpR . |
-b, --backup
Effectuer une copie de sauvegarde des fichiers écrasés ou supprimés. |
-d, --no-dereference
Copier les liens symboliques en tant que tels plutôt que de copier les fichiers vers lesquels ils pointent. Préserver également les liens matériels entre les fichiers sources durant la copie. |
-f, --force
Effacer les fichiers cibles existants. |
-i, --interactive
Interroger l'utilisateur avant d'écraser des fichiers réguliers existants. |
-l, --link
Effectuer des liens matériels plutôt que des copies des fichiers réguliers. |
-P, --parents
Construire le nom de chaque fichier destination en ajoutant au répertoire cible un slash et le nom du fichier source indiqué. Le dernier argument de cp doit être un répertoire existant. Par exemple, la commande `cp --parents a/b/c rép_existant' copie le fichier a/b/c en rép_existant/a/b/c, tout en créant les sous-répertoires intermédiaires manquants. |
-p, --preserve
Conserver le propriétaire, le groupe, les permissions d'accès et les horodatages du fichier original. |
-r
Copier récursivement les répertoires, les sous-répertoires, et les fichiers réguliers qu'ils contiennent. Les fichiers spéciaux et les FIFOs sont considérés comme des fichiers normaux, desquels on essayera de lire des données pour les écrire dans le fichier destination. Ainsi `cp' risque de bloquer indéfiniment durant la lecture d'une FIFO ou d'un fichier spécial /dev/tty. Il faut considérer ceci comme un bug. Cela signifie qu'il faut éviter l'option -r, et la remplacer par -R. N'oublions pas que l'ouverture d'un fichier spécial inconnu, par exemple un scanner peut avoir des effets indésirables sur le matériel. |
-R
Copier récursivement les répertoires, les sous-répertoires, en préservant tous les types de fichiers rencontrés (voir option -r ci-dessus). |
--sparse= QUAND
[NDT : sparse = clairsemé] Un fichier à trous (sparse file) contient des séquences d'octets nuls n'occupant pas de place sur le disque. L'appel système `read' lit ces données comme des zéros. Non seulement cela permet d'économiser de la place sur le disque, mais on gagne également de la vitesse de lecture. De nombreux fichiers binaires (exécutables par exemple) contiennent des séquences importantes de zéros. Par défaut, cp détecte les trous dans les fichiers en utilisant une heuristique grossière et restituera les trous dans les fichiers de sortie. L'argument QUAND peut prendre l'une des valeurs suivantes : auto
always
never
|
-s, --symbolic-link
Créer des liens symboliques plutôt que des copies des fichiers réguliers. Tous les noms de fichiers sources doivent être absolus (commençant par '/') à moins que les fichiers destinations résident dans le répertoire en cours. Cette option affiche un message d'erreur pour les systèmes de fichiers ne supportant pas les liens symboliques. |
-u, --update
Ne pas effectuer la copie si le fichier destination existant (autre qu'un répertoire) a une date de modification égale ou plus récente que celle du fichier source. |
-v, --verbose
Afficher le nom de chaque fichier avant de le copier. |
-x, --one-file-system
Ignorer les sous-répertoires se trouvant sur un système de fichiers différent de celui du départ de la copie. |
Options
Les versions GNU des programmes comme cp , mv , ln , install et patch créeront au besoin une copie de sauvegarde des fichiers à écraser, à modifier ou à détruire. On demande une copie de sauvegarde à l'aide de l'option -b, on indique la nomenclature à adopter avec l'option -V, et si la sauvegarde se fait avec un suffixe, celui-ci est précisé avec l'option -S.
-b, --backup
Créer une copie de sauvegarde des fichiers à écraser ou à détruire. |
--backup= CONTROL
(Depuis fileutils-4.1.) |
-S SUFFIXE , --suffix= SUFFIXE
Ajouter le SUFFIXE indiqué à chaque fichier de sauvegarde créé. Si cette option n'est pas indiquée, on utilisera la valeur de la variable d'environnement SIMPLE_BACKUP_SUFFIX . Si la variable SIMPLE_BACKUP_SUFFIX n'existe pas, la valeur par défaut est `~'. |
-V MÉTHODE , --version-control= MÉTHODE
Cette option correspond à la variable `version-control' sous Emacs. Les MÉTHODES valides (les abréviations non ambiguës sont acceptées) sont : t , numbered
nil , existing
never , simple
|
Options
--help
Afficher un message d'aide sur la sortie standard, et se terminer correctement. |
--version
Afficher un numéro de version sur la sortie standard, et se terminer correctement. |
--
Fin de la liste d'options. |
Environnement
Les variables LANG, LC_ALL, LC_CTYPE et LC_MESSAGES ont leurs significations habituelles. Pour la version GNU, les variables SIMPLE_BACKUP_SUFFIX et VERSION_CONTROL configurent la nomenclature adoptée pour les sauvegardes de fichiers.
Conformité
POSIX 1003.2.
Notes
Cette page décrit cp tel qu'on le trouve dans le paquetage fileutils-4.0 ; d'autres versions peuvent différer légèrement.
Traduction
Christophe Blaess, 1996-2003.
Poster un commentaire