Liens de saut
La commande CP sur Linux a des options intéressantes qui étendent son utilisation. La plupart des utilisateurs ne font que la copie de vanille et ne prennent jamais la peine d'explorer les drapeaux qui l'accompagnent. Après avoir essayé quelques-uns, j'ai réalisé qu'il y avait des drapeaux que j'utilise pour une meilleure expérience.
-r ou -r: copie récursive
Vous pouvez utiliser la commande CP pour copier à la fois les fichiers et les répertoires. Par défaut, cela ne fonctionne que sur les fichiers. Si vous essayez de l'utiliser avec des répertoires, vous obtiendrez une erreur qui saute la copie du répertoire.
cp dirA/ dirB/
C'est là que le drapeau -R entre en jeu. En utilisant le drapeau -r, vous pouvez également copier des répertoires et des fichiers à l'intérieur.
cp -r dirA/ dirB/
Ici, nous copions l'ensemble du répertoire « Dira / » dans un autre répertoire appelé « dirb / ». Vous remarquerez que le répertoire « Dira / » lui-même a également été copié. Si vous ne voulez pas cela et que vous souhaitez simplement copier le contenu à l'intérieur du répertoire, vous devez ajouter un point (.) Après la barre oblique, comme ceci:
cp -r dirA/. dirB/
Si vous souhaitez simplement créer une copie dans le même répertoire, vous pouvez plutôt passer un nouveau nom comme argument.
cp -r dirA/ dir-copy # copying the directory and renaming it
-U: Copiez uniquement lorsque la source est plus récente
L'un des drapeaux les plus sous-estimés de la commande CP est -U. Cette option indique à CP de copier un fichier uniquement si le fichier source est plus récent que la destination ou si la destination n'existe pas encore.
Imaginez que vous avez un répertoire plein de fichiers de projet que vous sauvegardez dans un autre dossier. L'exécution d'une copie récursive normale à chaque fois écrasera tous les fichiers, même ceux qui n'ont pas changé. C'est gaspillé des E / S et, selon la taille du projet, pourrait ralentir les choses.
Avec -U, vous pouvez exécuter la même commande Copy encore et encore, et seuls les fichiers mis à jour seront transférés. Disons que vous avez un dossier « Reports / » que vous synchronise dans « Backup / »:
cp -ru reports/ backup/
Comme le montre la capture d'écran ci-dessus, j'ai fait une petite expérience que vous pouvez également suivre. La première course copiera tout. La deuxième exécution ne copiera que les fichiers que vous avez touchés ou créés depuis la dernière sauvegarde. Si rien n'a changé, la commande finira presque instantanément.
-i: mode interactif
Si vous oubliez comme moi, vous avez probablement exécuté la commande CP sans réfléchir, appuyez sur ENTER et réalisez soudain que vous venez d'éclairer un fichier que vous ne vouliez vraiment pas perdre. Par défaut, CP ne demandera pas la confirmation. Il remplacera simplement le fichier de destination en silence. C'est là que le drapeau -i est utile. Il indique à CP de demander avant d'écraser un fichier. Si un fichier de destination existe déjà, CP vous invitera à une question simple comme:
cp: overwrite 'file.txt'?
À ce stade, vous pouvez taper «y» pour l'écraser ou «n» pour le sauter. Voici un exemple:
cp -i report1.txt reports/
# cp: overwrite 'reports/report1.txt'? n
cp -i report1.txt reports/
# cp: overwrite 'reports/report1.txt'? y
Si « Reports / Report1.txt » existe déjà, vous vous demandez avant de le remplacer. Sans -I, le fichier serait écrasé sans avertissement. Ceci est particulièrement utile lors de la copie dans des emplacements tels que « / etc / » ou « / var / » « où un mauvais écrasement pourrait entraîner des problèmes importants. Dans le cas où vous souhaitez copier un tas de fichiers et que certains existent déjà dans la cible, -Je vous permet de décider au cas par cas.
-v: mode verbeux
L'indicateur -v est assez courant pour les commandes Linux. Il permet le mode verbeux, ce qui est utile pour voir ce qui se passe en arrière-plan lorsque vous exécutez une commande. Pour la commande CP spécifiquement, l'indicateur -v montre ce qu'il copie exactement. Avec -v, chaque fichier qui est copié est imprimé au terminal au format:
'source' -> 'destination'
Cela le rend clair ce qui se passe dans les coulisses. Voyons un exemple:
cp -v report1.txt backup/
Pour plusieurs fichiers, vous pouvez utiliser un joker:
cp -v *.txt backup/
Vous avez maintenant confirmé que chaque fichier est allé là où vous vous attendiez. Lorsque vous copiez des fichiers par lots, le drapeau verbeux vous donne un journal de progrès en cours. Il est également utile d'attraper ces petites erreurs en cas de copie ratée.
-P: Préserver les attributs
Par défaut, la commande CP se concentre sur l'obtention du contenu de vos fichiers du point A au point B., mais parfois les métadonnées, des choses comme les horodatages, les modes de fichiers et la propriété, sont tout aussi importants que le fichier lui-même. C'est à cela que sert l'indicateur -p: préserver les attributs.
Lorsque vous ajoutez -p, CP conservera ces attributs. Sans -P, les fichiers copiés obtiennent de nouveaux horodatages et la propriété par défaut dans la destination. Avec -p, ils restent des «clones» des originaux dans le contenu et les métadonnées. Voyons-le en action.
cp -p config.cfg backup/
Dans le cas d'une copie récursive:
cp -rp project/ backup/
Cela copiera l'intégralité du projet / du répertoire, garantissant que tous les fichiers conservent leurs attributs d'origine. Si vous archivez des fichiers, vous ne voulez pas qu'ils affichent tous la date d'aujourd'hui. La préservation des horodatages d'origine vous aide à savoir quand les choses ont réellement changé.
Il y a beaucoup plus de drapeaux et d'arguments pour la commande CP. Vous pouvez les explorer dans la page manuelle officielle. Connaître ces options de commande facilite la navigation de fichiers Linux et la gestion des fichiers du terminal.
Vous pouvez lire l’article original (en Angais) sur le sitewww.howtogeek.com