====== cp ====== * Objet : cp * Niveau requis : {{tag>débutant avisé}} * Commentaires : //Copie de fichier. // * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) * Suivi : * Création par [[user>MaTTuX_]] //Mattuxalem...// * Testé par [[user>smolski]] le 20-06-2009 * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=1478 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) ===== Présentation ===== La commande ''cp'' permet la copie de fichiers. == Nota == Pour les petits fichiers, cp convient très bien mais si vous transférez ou copiez des fichiers lourds et nombreux, utilisez les commandes : * [[doc:reseau:rsync|rsync - synchronisation entre la source et la destination, ce qui correspond à une copie]] ou : * [[doc:systeme:mv|mv - déplacement immédiat]] Ces deux outils offrant plus d'un tiers de vitesse en rapidité d'exécution et une bonne sécurité en utilisant les options de chacun d'eux qui le permettent. \\ Lien de test sur le forum : * [[https://debian-facile.org/viewtopic.php?pid=252419#p252419]] ===== Syntaxe ===== cp [option]... source... dossier cp [option]... [-T] source cible cp [option]... -t dossier source... Elle s'utilise sous plusieurs formes : ===== Copie d'un fichier source ===== Exemple de copie du fichier **essai** dans le répertoire principal((le répertoire à la racine de notre user ''/home/user'' en cours)). - S'assurer d'être bien positionné dans le répertoire principal avec [[doc:programmation:shell:cd|la commande cd]] ainsi :cd ~ - Créer un fichier vide //essai// avec la commande [[doc:systeme:touch|touch]] :touch essai - On va d'abord vérifier la présence du fichier **essai** à l'aide de [[doc:systeme:ls|la commande ls]] :ls essaiessaiImpec le fichier ''essai'' est bien présent. - On copie maintenant notre fichier **essai** et, pour différencier la copie du fichier original présent dans le même répertoire courant((le répertoire d'où on lance la commande)) on lui accole par exemple le chiffre ''1'' :cp essai essai1 - On regarde le résultat :ls essai*essai essai1 On a donc bien copié le fichier **essai** dans le répertoire courant en lui donnant le nouveau nom **essai1**. :-) ===== Copie d'un fichier distant dans le répertoire courant ===== Le répertoire courant est représenté par un . (Voir à ce sujet [[doc:programmation:shell:repertoires|le tuto des répertoires]]). \\ On peut donc copier un fichier qui se trouve dans un répertoire donné en indiquant seulement le chemin où il se trouve. Depuis un répertoire courant dans lequel je veux copier le fichier //test// qui se trouve en **/home/martin/archives**, je tape la commande suivante : cp /home/martin/archives/test . //Pas plus compliqué que cela !// souvent ,l'utilisateur souhaite copier des fichiers d'un dossier vers un autre sans avoir a ecrire les fichiers un a un : cp /chemin_de_ton_dossier/* /chemin_vers_ton_répertoire .(merci a paskal) ===== Copie d'un fichier dans un répertoire différent ===== On va, par exemple, copier le fichier //essai// d'où nous nous trouvons par défaut sur le bureau (Le bureau est en effet un répertoire nommé Desktop !) : cp essai /home/mattux/Desktop Résultat ls /home/mattux/Desktop 435076.gif MozillaFirefox.desktop beryl-settings.Profile myComputer.desktop essai Network.desktop **ATTENTION ! :** \\ Si le fichier //essai// existe déjà dans le répertoire de destination (Desktop //dans cet exemple//), son contenu est écrasé par le nouveau contenu du fichier essai du répertoire source ! ==== Option -i ==== Afin de contrôler la copie, on utilise l'option **-i** ainsi : cp -i essai /home/mattux/Desktop Si un fichier //essai// est déjà présent sur le bureau (répertoire /Desktop), **cp** s'interrompt et demande par y (yes) ou n (no) s'il doit écraser le fichier ! Au cas d'un trop grand nombre de remplacements demandés (une commande de copie redoublée par inadvertance pour des fichiers volumineux par exemple...) C-c sur le clavier interrompt tous les processus de cp d'un coup... ==== Option -r (récursif) ==== L'option cp -r permet de copier un répertoire avec son contenu. Prenons en exemple le répertoire sav_cle_jojo et tout son contenu de fichiers et d'autres répertoires avec leurs répertoires et fichiers contenus aussi en cascade : ls sav_cle_jojo Affiche commande-2015.odt * 1 répertoire : Affiche * 1 fichier : commande-2015.odt cp sav_cle_jojo sav_test cp: omission du répertoire « sav_cle_jojo » cp -r sav_cle_jojo sav_test ls sav_test Affiche commande-2015.odt ===== Copie de fichiers depuis des répertoires différents ===== Indiquer le chemin complet pour chacun des fichiers à copier. Syntaxe : cp /chemin1/fichierA /chemin2/fichierB /chemin3/fichierC /répertoire_de_destination/ ==== Plusieurs fichiers depuis le même répertoire ==== Se placer dans le répertoire d'origine avec [[:doc:programmation:shell:cd | la commande cd]], et taper : cd /répertoire_d_origine/ Puis cp fichierA fichierB fichierC /répertoire_de_destination/ === Commande bash === Rédiger une commande bash en utilisant les accolades {} ainsi : cp /répertoire_d_origine/{fichierA,fichierB,fichierC} /répertoire_de_destination/ Ce motif : ''{fichierA,fichierB,fichierC}'' est un [[:doc:programmation:shell:regexp | regexp]], ici dans un contexte bash. ===== Lien ===== man cp //Voilà pour la commande cp.//