¿Qué significa "cp: omitir directorio"?

408

He emitido el siguiente comando:

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

Cuando hago esto, empiezo a recibir los siguientes mensajes:

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' 

y así...

¿Por qué recibo estos mensajes?

MEM
fuente

Respuestas:

536

De manera predeterminada, cpsolo copia los archivos directos y no los subdirectorios en el directorio. El mensaje cp: omitting directory 'directory'le advierte que el directorio mencionado no se copia.

Para hacerlo, especifique la opción -r(o --recursive):

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

La página del manual (comando:) man cpcontiene una descripción general de las opciones disponibles.

Lekensteyn
fuente
2
Muchas gracias. Pensé que * lo trataría recursivamente de alguna manera. Pero no. : D Gracias de nuevo. :)
MEM
11
@MEM: el *es expandido por Bash, no por cp. Pruébelo usted mismo poniendo echo delante de su comando. Cuando se expande, coincide todo con un precedente ...library/Zend/(los archivos y directorios que contiene).
Lekensteyn
La buena noticia es que eso omitting directory 'directory'no significa que esté eliminando ese directorio.
Bishwas Mishra
@Lekensteyn estaba tratando de copiar el contenido de un usuario a otro. Así que obtuve el permiso del usuario chmod a+rx ~/después de que intenté copiarlo cp /home/2110/* /home/2111/, produce un error que indica que el permiso fue denegado. donde estaba equivocado lamento comentar porque no puedo hacer preguntas duplicadas. espero respuesta rápida :)
jasinth premkumar
@jasinthpremkumar Los archivos en /home/2110son propiedad del usuario 2110 mientras que los archivos en /home/2111son propiedad de 2111. Para configurar el propietario, use algo como sudo chown -R 2111 /home/2111.
Lekensteyn
40

El mensaje significa que cpno ha copiado los directorios enumerados. Este es el comportamiento predeterminado para cp: solo los archivos se copian normalmente, independientemente de si los está especificando explícitamente o utilizando *. Si desea copiar directorios, use el -rinterruptor que significa "recursivo".

Roger Light
fuente
16

Un par de cosas aquí que deben verificarse:

  1. No utilice sudo. No lo necesita, ya tiene los permisos para escribir cosas en su propio directorio personal.

  2. Puede ver fácilmente archivos y directorios ocultos en el administrador de archivos gráficos seleccionando Ver / Mostrar archivos ocultos en el menú. O presionando Ctrl- H.

  3. Debe usar la -Ropción en el cpcomando para copiar un directorio y su contenido.

  4. / home no es tu directorio de inicio. / home / nombre de usuario es. Entonces probablemente estés intentando copiar desde un lugar equivocado.

  5. El shell distingue entre mayúsculas y minúsculas, por lo que ~ / downloads y ~ / Downloads son dos cosas diferentes.

Nikunj K.
fuente
2

Cuando está copiando un directorio como:

cp dir1 copy_of_dir1

Solo está copiando exactamente y en dir1sí mismo y no los archivos dentro de él, por lo que al final terminará con una nueva estructura de directorio mientras la estructura no exista.

En otras palabras, después de que haya sido copiado que va a decir que mis contenidos es file1, file2, etc; Sin embargo, estos archivos no se han copiado y, por lo tanto, no existen en él.

Entonces, para solucionar este problema que puede surgir cppor defecto, no copie los directorios y los omita a menos que especifique la -ropción que también copia todos los archivos de forma recursiva.

Ravexina
fuente
1

La razón por la que dice omitting directoryes porque cpy todas las utilidades de copia, que yo sepa, crean una lista de archivos y subdirectorios para copiar antes de comenzar a copiar los archivos. Cuando --recursivefaltan las opciones, los subdirectorios se eliminan de esta lista. Como tal, la omisión se refiere a la eliminación de la lista de copias, no de los medios de origen. Creo que esto aborda el significado del mensaje.

endrias
fuente
0

El comando cp se usa para copiar archivos y directorios, no los directorios anidados, si desea copiar directorios anidados, puede agregar -r después de eso, donde -r significa recursivo.

Sintaxis que puede seguir (ejecutándose como root):

cp -r /source/dir/* /destination/ 

o

cp --recursive /source/dir/* /destination/
itsguri
fuente
-1

Supongamos que tiene dos directorios 'Etiqueta' y 'Prueba'

Si desea copiar el directorio 'Tag' al directorio 'Test' use el comando

$ : cp -r Tag Test (case sensitive)

En su mayoría, el problema se resolverá con el código anterior si no, y obtendrá el siguiente mensaje como

cp: omitting directory `Tag' 
cp: omitting directory `Test'

luego agregue algunos archivos en el directorio 'Etiqueta' y luego cópielos en 'Prueba'. En realidad, tengo el mismo problema pero resuelto como lo que dije en segundo lugar.

jainmiah shaik
fuente