Linux |
CentOS 4.8 |
|
cp(1) |
cp − Copier des fichiers. |
cp [options] fichier
chemin Options POSIX : [−fipRr] [−−] Options GNU (forme courte) : [−abdfilprsuvxPR] [−S SUFFIXE] [−V {numbered,existing,simple}] [−−backup=CONTROL] [−−sparse=WHEN] [−−help] [−−version] [−−] |
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. |
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. |
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. |
−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 |
Le comportement par défaut, le fichier de sortie est troué si des trous sont détectés dans le fichier d’entrée. |
||
always |
Toujours trouer les fichiers de sortie. Cette option sert lorsque les fichiers d’entrée se trouvent sur un système de fichiers n’acceptant pas les trous, et que les fichiers de sortie se trouveront sur un système les acceptant. |
||
never |
Ne jamais essayer de faire de trous dans les fichiers de sortie. Si vous trouvez une utilité à cette option, faites-le nous savoir... |
−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. |
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 |
Préciser la nomenclature des fichiers de sauvegarde La MÃTHODE indiquée peut être ‘numbered’ (‘t’), ‘existing’ (‘nil’), ou ‘never’ (‘simple’). Si cette option n’est pas indiquée, la valeur de la variable d’environnement VERSION_CONTROL est utilisée, et si la variable VERSION_CONTROL n’existe pas, la valeur par défaut est ‘existing’. 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 |
Toujours faire une sauvegarde numérotée. |
nil, existing |
Faire une sauvegarde numérotée des fichiers en ayant déjà une précédente, et une sauvegarde simple pour les autres. |
never, simple |
Faire toujours une sauvegarde simple. |
−−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. |
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. |
POSIX 1003.2. |
Christophe Blaess, 1997. |
cp(1) |