Cp
| Fiche express | |
|---|---|
| Domaine | Copie de fichiers/répertoires |
| Commande | cp
|
| Contexte | Copie locale, tous Unix/Linux |
| Voir aussi | Rsync (gros volumes, reprise sur erreur, delta) |
cp copie des fichiers ou des répertoires. Simple à l'usage courant, mais quelques options changent radicalement son comportement (récursivité, préservation des attributs, gestion des liens symboliques) et méritent d'être connues avant de l'utiliser en script ou sur des données sensibles.
Options principales
cp fichier1 fichier2 # copie simple
cp -r source/ dest/ # copie récursive (répertoires)
cp -a source/ dest/ # copie d'archive : récursive + préserve tout (voir plus bas)
cp -p fichier1 fichier2 # préserve mode, propriétaire, horodatage
cp -v fichier1 fichier2 # verbeux, affiche chaque fichier copié
cp -i fichier1 fichier2 # demande confirmation avant d'écraser une destination existante
cp -u source dest # ne copie que si source est plus récente (ou dest absente)
cp -n source dest # no-clobber : ne jamais écraser une destination existante
L'option -a en détail
-a (archive) est un raccourci équivalent à -dR --preserve=all : copie récursive, préserve les liens symboliques en tant que tels (au lieu de suivre la cible), et conserve mode, propriétaire, groupe, horodatage, contexte SELinux et attributs étendus quand c'est possible. C'est l'option à utiliser pour dupliquer une arborescence à l'identique (migration de données, clonage d'une arborescence de configuration, etc.).
cp -a /depuis/titi /vers/toto
Piège : les liens symboliques
Par défaut, cp suit les liens symboliques : copier un lien symbolique recopie le contenu du fichier ciblé, pas le lien lui-même. Sur une arborescence contenant des liens, ça peut faire exploser la taille de la copie ou dupliquer des données qui devaient rester partagées.
cp lien_symbolique copie # copie le fichier cible, PAS le lien
cp -a lien_symbolique copie # copie le lien symbolique tel quel
cp -P lien_symbolique copie # -P seule : ne pas suivre les liens (sans les autres préservations de -a)
Utiliser -a ou -P dès qu'une arborescence peut contenir des liens symboliques et qu'on veut préserver la structure d'origine plutôt que la "aplatir".
Copie récursive et écrasement
cp -r source/ dest/ # copie récursive classique, écrase les fichiers existants dans dest/
cp -rn source/ dest/ # copie récursive sans jamais écraser (no-clobber)
cp -ri source/ dest/ # copie récursive avec confirmation avant chaque écrasement
cp -n est pratique pour fusionner deux arborescences sans risquer d'écraser des fichiers déjà présents dans la destination, par exemple pour compléter une copie interrompue sans tout retaper à la main.
cp vs rsync
cp convient pour des copies ponctuelles, locales, sur des volumes raisonnables. Pour de gros volumes, des transferts qui peuvent être interrompus, ou une synchronisation qui doit reprendre là où elle s'est arrêtée sans tout recopier, Rsync est mieux adapté : il ne transfère que les différences, affiche une progression et peut reprendre un transfert incomplet.
Voir aussi
- Rsync — synchronisation incrémentale, reprise sur erreur, gros volumes