464 votes

Que signifie "cp : omitting directory" ?

J'ai lancé la commande suivante :

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Lorsque je fais cela, je commence à recevoir les messages suivants :

cp: omitting directory `Tag' 
cp: omitting directory `Test' 
cp: omitting directory `Text' 
cp: omitting directory `TimeSync' 
cp: omitting directory `Tool' 
cp: omitting directory `Translate' 
cp: omitting directory `Uri' 
cp: omitting directory `Validate' 

et ainsi de suite...

Pourquoi est-ce que je reçois ces messages ?

611voto

Lekensteyn Points 162346

Par défaut, cp ne copie que les fichiers directs, et non les sous-répertoires du répertoire. Le message cp: omitting directory 'directory' vous avertit que le répertoire mentionné n'est pas copié.

Pour ce faire, il faut spécifier l'option -r (ou --recursive ) :

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

El page de manuel (commande : man cp ) contient un aperçu des options disponibles.

2 votes

Merci beaucoup. Je pensais que * le traiterait de manière récursive. Mais non. :D Merci encore. :)

11 votes

@MEM : le * est développé par Bash, et non par cp . Testez-le vous-même en mettant echo devant votre commandement. Lorsqu'elle est développée, elle correspond à tout ce qui est précédé d'un ...library/Zend/ (les fichiers et répertoires qu'il contient).

1 votes

La bonne nouvelle est que omitting directory 'directory' ne signifie pas qu'il supprime ce répertoire.

42voto

ShawnD Points 519

Le message signifie que cp n'a pas copié les répertoires listés. C'est le comportement par défaut pour cp - seuls les fichiers sont copiés normalement, indépendamment du fait que vous les spécifiez explicitement ou que vous utilisiez l'option * . Si vous voulez que les répertoires soient copiés, utilisez l'option -r qui signifie "récursif".

16voto

Nikunj K. Points 261

Il y a plusieurs choses à vérifier :

  1. N'utilisez pas sudo . Vous n'en avez pas besoin, vous avez déjà les permissions d'écrire des choses dans votre propre répertoire personnel.

  2. Vous pouvez facilement afficher les fichiers et répertoires cachés dans le gestionnaire de fichiers graphique en sélectionnant View/Show Hidden Files dans le menu. Ou en appuyant sur Ctrl - H .

  3. Vous devez utiliser le -R dans l'option cp pour copier un répertoire et son contenu.

  4. /home n'est pas votre répertoire personnel. /home/username l'est. Vous essayez donc probablement de copier à partir du mauvais endroit.

  5. Le Shell est sensible à la casse, donc ~/downloads et ~/Downloads sont deux choses différentes.

2voto

Ravexina Points 50599

Lorsque vous copiez un répertoire comme :

cp dir1 copy_of_dir1

Vous copiez seulement et exactement le dir1 et non les fichiers qui s'y trouvent, ce qui fait qu'à la fin vous vous retrouverez avec une nouvelle structure de répertoire alors que la structure n'existe pas.

En d'autres termes, après avoir été copié, il dira que mon contenu est file1 , file2 Cependant, ces fichiers n'ont pas été copiés et n'existent donc pas dans le système.

Donc pour résoudre ce problème qui peut survenir cp par défaut ne copie pas les répertoires et les ignore sauf si vous spécifiez -r qui copie également tous les fichiers de manière récursive.

1voto

endrias Points 565

La raison pour laquelle il est dit omitting directory est parce que cp et tous les utilitaires de copie, que je connais, créent une liste de fichiers et de sous-répertoires à copier avant de commencer à copier les fichiers. Lorsque le --recursive est manquante, les sous-répertoires sont supprimés de cette liste. En tant que tel, omettre fait référence à la suppression de la liste des copies, et non de votre support source. Je pense que cela répond à la signification du message.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X