web-dev-qa-db-fra.com

Que signifie "cp: omitting directory"?

J'ai émis 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' 

etc...

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

397
MEM

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

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

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

La page de manuel (commande: man cp) contient une vue d'ensemble des options disponibles.

516
Lekensteyn

Le message signifie que cp n'a pas copié les répertoires répertoriés. Ceci est le comportement par défaut de cp - seuls les fichiers sont copiés normalement, que vous les spécifiiez explicitement ou que vous utilisiez *. Si vous voulez copier des répertoires, utilisez le -r qui signifie "récursif".

37
Roger Light

Un couple de choses ici qui doivent vérifier:

  1. N'utilisez pas Sudo. Vous n'en avez pas besoin, vous avez déjà les autorisations nécessaires pour écrire des éléments 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 Afficher/Afficher les fichiers cachés dans le menu. Ou en appuyant sur Ctrl - H.

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

  4. / home n'est pas votre répertoire personnel./home/nom d'utilisateur est. Donc, vous essayez probablement de copier du mauvais endroit.

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

15
Nikunj K.

Lorsque vous copiez un répertoire tel que:

cp dir1 copy_of_dir1

Vous ne faites que copier exactement le dir1 lui-même et non les fichiers qu'il contient. Ainsi, à la fin, vous obtiendrez une nouvelle structure de répertoires alors que celle-ci n'existe pas.

En d'autres termes, une fois copié, le contenu est file1, file2, etc. Cependant, ces fichiers n'ont pas été copiés et n'y existent donc pas.

Donc, pour résoudre ce problème, cppar défaut ne copie pas les répertoires et les ignore, sauf si vous spécifiez l'option -r qui copie également tous les fichiers de manière récursive.

2
Ravexina

La raison pour laquelle il indique omitting directory est que cp et tous les utilitaires de copie, que je sache, créent une liste de fichiers et de sous-répertoires à copier avant de commencer à copier les fichiers. Lorsque les options --recursive sont manquantes, les sous-répertoires sont supprimés de cette liste. En tant que tel, omettre fait référence à la suppression de la liste de copie, et non de votre support source. Je crois que cela aborde le sens du message.

1
endrias