| | |
cp - Copier des fichiers.
cp [options] fichier chemin
cp [options] fichier... répertoire
Options POSIX : [-fipRr]
Options GNU (forme
courte) : [-abdfilprsuvxPR] [-S SUFFIXE] [-V {numbered,existing,simple}] [--sparse=WHEN]
[--help] [--version] [--]
cp sert à copier des fichiers (et eventuellement
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
`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.
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.
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 rep_existant' copie le fichier a/b/c en rep_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 ont 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 nous le 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.
- -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 METHODE, --version-control=METHODE
Préciser la nomenclature des fichiers de sauvegarde La METHODE 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 METHODES valides (les abbréviations non-ambigües 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 terminer correctement.
- --version
- Afficher un numéro
de version sur la sortie standard, et 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.
Table des matières
© 1996-2000 Adaptation française "Christophe Blaess"
| |