Un pense-bête

Trucs de geek : la commande cp

Un des trucs que l'on fait le plus souvent : copier des fichiers. On le fait naturellment sous Dolphin ou Nautilus mais sous la console on utilisera la commande cp.

Dans le principe on copie une source vers une destination : cp source destination

$ cp test.txt /home/jfd/

ou

$ cp fichier1 fichier2 /mon/reperoire/

On peut indiquer les répertoires :

$ cp /tmp/test.txt /medi/diskusv/

On peut copier les répertoires avec l'option r

$ cp -r /home/jfd/ /media/sauve/

et tout le contenu ainsi que l'ensemble des sous répertoires de mon dossier personnel sera sauvegardé sur ma clé usb.

Si vous ne souhaitez pas écraser les fichiers en réception utilisez l'option backup :

$ cp --backup test.txt /mon/repertoire

Ainsi si le fichier test.txt existe déja dans le dossier /mon/repertoire il sera sauvegardé sous le nom de test.txt~.

Si vous avez des liens symboliques parmi les fichiers à copier vous devez utiliser l'option "d" pour copier le lien et pas le fichier désigné par le lien.

exemple : soit deux fichiers 

-rw-rw-r--  1 jfd jfd         5 mai    2 20:30 test.txt
lrwxrwxrwx  1 jfd jfd         8 mai    2 20:30 lien_vers_test.txt -> test.txt

On a donc un fichier et un lien vers de fichier.

Ainsi un

$ cp tes.txt lien_vers_test.txt -d /mon/repertoire/

donne dans le dossier de destination :

lrwxrwxrwx 1 jfd jfd       8 mai    2 20:31 lien_vers_test.txt -> test.txt
-rw-rw-r-- 1 jfd jfd       5 mai    2 20:31 test.txt

Les liens sont préservés. Sans l'option "d" on obtiendrait :

-rw-rw-r-- 1 jfd jfd       5 mai    2 20:34 lien_vers_test.txt
-rw-rw-r-- 1 jfd jfd       5 mai    2 20:34 test.txt

On a deux fichiers.

Si vous ne voulez pas écraser un fichier en réception utilisez l'opton "n". Votre commande se terminera bien mais la copie ne sera pas réalisée.

Pour confirmez un éventuel écrasement utilisez l'option "i" qui vous demandera confirmation en cas de doublon.

CP peut aussi être utilisé pour créer des liens symboliques avec l'option "l" :

$ cp -l test.txt lien_test.txt

créera le lien lien_test.txt pointant vers test.txt.

Si vous souhaitez copier des fichier tout en préservant ses attributs, utilisez l'option "p" :

$ -p test.txt /mon/repertoire

et test.txt aura conserver ces droits (propriétaire, goupe et attributs).

Pour ne pas écraser des fichiers avec une version plus ancienne, utilisez l'option "u" :

$ cp -u test.txt /mon/repertoire/

La commande se terminera correctement mais la copie ne s'éxécutera pas.

Fait le 03/05/2013

Tags: geek, cp