Cp est l’une des commandes Unix de base. Vous savez déjà qu’il est utilisé pour copier un ou plusieurs fichiers ou répertoires de la source vers la destination.
Bien que ce didacticiel soit destiné aux débutants, il est également utile pour tout le monde de passer rapidement en revue diverses options de commande cp à l’aide d’exemples pratiques.
Même si vous utilisez tout le temps la commande cp, un ou plusieurs des exemples expliqués ci-dessous peuvent être nouveaux pour vous.
La forme générale de la commande de copie:
cp [option] source destination
Pour copier un fichier, vous devez transmettre la source et la destination à la commande de copie. L’exemple suivant copie le fichier de project / readme.txt vers projectbackup / readme-new.txt.$ cp project/readme.txt projectbackup/readme-new.txt
$ cd projectbackup/
$ ls readme-new.txt
Si vous souhaitez copier un fichier d’un dossier vers un autre avec le même nom, seul le nom du répertoire de destination est suffisant pour indiqué ci-dessous.
$ cp project/readme.txt projectbackup/
$ cd projectbackup/
$ ls readme.txt
Un répertoire (et tout son contenu) peut être copié de la source vers la destination avec l’option récursive -r comme indiqué ci-dessous:
$ ls project
src/ bin/ doc/ lib/ test/ readme.txt LICENSE
$ cp -r project/ backup/
$ ls backup
src/ bin/ doc/ lib/ test/ readme.txt LICENSE
Vous pouvez copier plusieurs fichiers de la source vers la destination comme indiqué ci-dessous:
$ cd src/
$ cp global.c main.c parse.c /home/thegeekstuff/projectbackup/src/
Si les fichiers source ont un modèle commun, utilisez des caractères génériques comme indiqué ci-dessous. Dans cet exemple, tous les fichiers d’extension c sont copiés dans le répertoire / home / thegeekstuff / projectbackup / src /.
$ cp *.c /home/thegeekstuff/projectbackup/src/
Copiez plusieurs répertoires comme indiqué ci-dessous.
$ cd project/
$ cp -r src/ bin/ /home/thegeekstuff/projectbackup/
dd
Dans le cas où le fichier de destination existe déjà avec le même nom, cp vous permet de sauvegarder le fichier de destination avant de l’écraser.
Dans cet exemple, readme.txt existe à la fois dans le répertoire project / et projectbackup / et lors de la copie de project / vers projectbackup / le fichier readme.txt existant est sauvegardé comme indiqué ci-dessous:
$ cd projectbackup
$ ls -l readme.txt -rw-r--r-- 1 bala geek 1038 Jan 8 13:15 readme.txt
$ cd ../project
$ ls -l readme.txt -rw-r--r-- 1 bala geek 1020 Jan 8 12:25 readme.txt
$ cp --backup readme.txt /home/thegeekstuff/projectbackup/
Le fichier existant a été déplacé vers readme. txt ~ et le nouveau fichier a été copié en tant que readme.txt comme indiqué ci-dessous.
$ cd / home / thegeekstuff / projectbackup /
$ ls -l
-rw-r – r– 1 bala geek 1020 8 janvier 13:36 readme.txt En parlant de sauvegardes, il est important de comprendre comment fonctionne la commande rsync pour sauvegarder efficacement les fichiers.-rw-r - r-- 1 bala geek 1038 8 gennaio 13:15 readme.txt ~
Lorsque vous exécutez la commande cp, si la source est un fichier de lien, le fichier réel est copié et non le fichier de lien. Si vous souhaitez simplement copier le lien tel qu’il est, spécifiez l’option -d comme indiqué ci-dessous:
Ce qui suit montre que sans l’option -d, il copiera le fichier (et non le lien): pour conserver le lien lors de la copie, procédez comme suit:
$ cd project / bin
$ ls -l startup.sh
lrwxrwxrwx 1 root root 18 gen 8 13:59 startup.sh -> ../test/startup.sh
$ cp startup.sh / home / thegeekstuff / projectbackup / bin /
$ cd / home / thegeekstuff / projectbackup / bin /
$ ls -l
-rw-r - r-- 1 root root 102 8 gennaio 14:02 startup.sh
$ cd project / bin
$ cp -d startup.sh / home / thegeekstuff / projectbackup / bin /
$ ls -l startup.sh
lrwxrwxrwx 1 root root 18 gen 8 14:10 startup.sh -> ../test/startup.sh
Si vous souhaitez copier uniquement lorsque le fichier cible n’existe pas, utilisez l’option -n comme indiqué ci-dessous. Cela n’écrasera pas le fichier existant et la commande cp retournera avec succès le code de sortie comme indiqué ci-dessous: Comme vous le voyez ci-dessous, le fichier cible n’a pas été écrasé.
$ cd projectbackup
$ ls -l readme.txt
-rw-r – r– 1 bala geek 1038 8 gennaio 13:15 readme.txt
$ cd ../project
$ ls -l readme.txt
-rw-r – r– 1 bala geek 1020 8 gennaio 12:25 readme.txt
$ cp -n readme.txt / home / thegeekstuff / projectbackup / bin /
$ echo $?
0
$ cd projectbackup
$ ls -l readme.txt
-rw-r – r– 1 bala geek 1038 8 gennaio 13:15 readme.txt
Lorsque vous utilisez l’option -i, une confirmation sera requise avant d’écraser un fichier comme indiqué ci-dessous.
$ cp -i readme.txt / home / thegeekstuff / projectbackup /
cp: sovrascrivi `/home/thegeekstuff/projectbackup/readme.txt '? y
Lorsque vous exécutez la commande cp, vous pouvez créer un véritable lien vers le fichier (au lieu de le copier). L’exemple suivant crée le lien réel pour le fichier sample.txt dans le répertoire test /. Comme indiqué ci-dessus, test / sample.txt est un fichier lié au fichier sample.txt et l’inode des deux fichiers est le même.
$ ls -li sample.txt
10883362 -rw-r - r-- 2 bala geek 1038 9 gennaio 18:40 sample.txt
$ cp -l test sample.txt /
$ ls -li test / sample.txt
10883362 -rw-r – r– 2 bala geek 1038 9 gennaio 18:40 test / sample.txt
Lorsque vous exécutez la commande cp, vous pouvez créer un lien logiciel vers un fichier ou un répertoire. Dans l’exemple suivant, un lien symbolique est créé pour libFS.so.6.0.0 en tant que libFS.so,
# cd / usr / lib /
# ls -l libFS.so.6.0.0
-rw-r - r-- 1 root root 42808 19 novembre 2010 libFS.so.6.0.0
# cp -s libFS.so.6.0.0 libFS.so
# ls -l libFS.so
lrwxrwxrwx 1 root root 14 gen 9 20:18 libFS.so -> libFS.so.6.0.0
En utilisant l’option -p, vous pouvez conserver les propriétés d’un fichier ou d’un répertoire comme indiqué ci-dessous: Vous pouvez également conserver uniquement les propriétés requises telles que le mode, les propriétés, l’horodatage, etc., l’ exemple suivant conserve le mode d’un fichier lors de la copie:
$ ls -l sample.txt
-rw-r - r-- 2 bala geek 1038 9 gennaio 18:40 sample.txt
$ cp -p sample.txt test /
$ ls -l test / sample.txt
-rw-r – r– 2 bala geek 1038 9 gennaio 18:40 test / sample.txt
$ cp --preserve = mode sample.txt test /
La copie ne prend pas longtemps pour un petit fichier, mais elle peut prendre beaucoup de temps lors de la copie d’un gros fichier. Ainsi, lorsque vous copiez un fichier volumineux, vous pouvez vous assurer de ne le faire que lorsque le fichier source est plus récent que le fichier cible ou lorsque le fichier cible est manquant à l’aide de l’option -u comme indiqué ci-dessous.
Dans cet exemple, les deux fichiers LICENSE et readme.txt seront copiés du projet / vers le projectbackup /. Cependant, le fichier LICENSE existe déjà dans le répertoire projectbackup / et est plus récent que celui dans le répertoire project /.
$ cd project/
$ ls -l LICENSE readme.txt
-rw-r--r-- 1 bala geek 108 Jan 8 13:14 LICENSE
-rw-r--r-- 1 bala geek 32 Jan 8 13:16 readme.txt
$ cd /home/thegeekstuff/projectbackup/
$ ls -l LICENSE readme.txt
ls: cannot access readme.txt: No such file or directory
-rw-r--r-- 1 root root 112 Jan 9 20:31 LICENSE
Dans cet exemple, vous n’avez donc pas besoin de copier le fichier LICENCE dans le répertoire projectbackup /. Ceci est géré automatiquement par la commande cp, si vous utilisez l’option -u comme indiqué ci-dessous. Dans l’exemple suivant, seul le fichier readme.txt a été copié comme indiqué par l’horodatage dans le fichier.
$ cp -u -v LICENSE readme.txt /home/thegeekstuff/projectbackup/
`readme.txt' -> `/home/thegeekstuff/projectbackup/readme.txt'
$ cd /home/thegeekstuff/projectbackup/
$ ls -l LICENSE readme.txt
-rw-r--r-- 1 bala geek 112 Jan 9 20:31 LICENSE
-rw-r--r-- 1 bala geek 32 Jan 9 22:17 readme.txt
Les traitements des troubles de l'alimentation incluent la thérapie, l'éducation et les médicaments. Découvrez ce…
Je suis sur Bumble and Hinge depuis quelques mois maintenant et j'ai rencontré plusieurs personnes…
Être capable de reconnaître les signes de relations malsaines est essentiel pour savoir quand suivre…
Pour beaucoup d’entre nous, le travail constitue une partie importante de notre vie. C'est là…
Recevez les dernières diffusions en direct de Primogems pendant qu'elles sont disponibles. Lorsque vous achetez…
La mise à jour Mythical Wishes a ajouté un nouveau sous-type Eeveelution à Pokemon GO : Eevee…