1043 votos

¿Cómo puedo copiar el contenido de una carpeta a otra carpeta en un directorio diferente utilizando el terminal?

Estoy tratando de copiar el contenido de una carpeta a otra carpeta en un directorio diferente usando la terminal.

¿Podría alguien proporcionarme un ejemplo de la sintaxis de la línea de comandos necesaria para conseguirlo?

1560voto

enzotib Puntos 38044

Puede copiar el contenido de una carpeta /source a otra carpeta existente /dest con el comando

cp -a /source/. /dest/

El -a es una opción recursiva mejorada, que conserva todos los atributos de los archivos, y también conserva los enlaces simbólicos.

El . al final de la ruta de origen es un cp sintaxis que permite copiar todos los archivos y carpetas, incluidos los ocultos.

0 votos

@enzotib Estoy intentando utilizar este comando para copiar el contenido de "Descargas/texto" a "~/.config/inkscape/extensiones/". Usando tu comando escribo "cp -a /Downloads/textext/. /~/.config/inkscape/extensions/", pero no funciona

0 votos

@Funzies: probablemente tu comando debería ser: cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/

0 votos

Añadir -p para preservar los permisos de los archivos y las marcas de tiempo. cp -ap /var/www/original.com/images/. /var/www/new.com/images/

171voto

bodhi.zazen Puntos 47591

Una alternativa es rsync

rsync -r source/* destination

Las ventajas de rsync son:

  1. Tras la sincronización inicial, sólo copiará los archivos que hayan cambiado.

  2. Se puede utilizar a través de una red, conveniente para los archivos en $HOME, especialmente los archivos de configuración.

6 votos

Creo que no es necesario el asterisco. rsync -r source/ destination debería ser suficiente, ¿no?

1 votos

Este es más apropiado: 'rsync -rtvp source/* destination'

0 votos

-r no funciona para los archivos/carpetas ocultos

99voto

gaotter Puntos 116

Digamos que tienes una carpeta llamada carpeta1 en su ~ , en el interior carpeta1 es 1 archivo llamado archivo1 y 2 carpetas llamadas sub1 y sub2 cada uno con otros archivos y carpetas dentro de ellos.

Para copiar todo el contenido de ~/folder1 a ~/new_folder1 se utilizaría

cp -r ~/folder1/. ~/new_folder1

new_folder1 contendría entonces todos los archivos y carpetas de folder1 .

cp es el comando para copiar usando una terminal, -r lo hace de forma recursiva (así, directorio actual + otros directorios dentro del actual) ~/folder1 es la carpeta de origen, ~/new_folder1 es la carpeta de destino para los archivos/carpetas dentro del origen.

6 votos

No detecta los archivos ocultos

1 votos

¡Gracias Bruno! Me ayudó a entender la sintaxis, aunque tuve que cambiarla un poco (quitando el signo ~). Quizás porque la carpeta de destino estaba en /opt, que reside en otro sistema de archivos. ¡Y gracias Portablejim por recordar lo de los archivos ocultos!

6 votos

El periodo de espera es importante. Sin él, a veces puede crear un nuevo subdirectorio ~/new_folder1/folder1 en lugar de copiar el contenido.

15voto

Dilip Rajkumar Puntos 111

Comprueba esto http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ para más información sobre la copia de carpetas. Espero que esto ayude.

cp Command

cp es un comando de Linux para copiar archivos y directorios. La sintaxis es la siguiente:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

En este ejemplo se copia /home/vivek/letters y todos sus archivos a /usb/backup directorio:

cp -avr /home/vivek/letters /usb/backup

Dónde,

-a : Conserva los atributos especificados como el modo de directorio y archivo, la propiedad, las marcas de tiempo, si es posible los atributos adicionales: contexto, enlaces, xattr, todos.

-v : Explica lo que se está haciendo.

-r : Copiar directorios de forma recursiva. Ejemplo:

Copie una carpeta llamada /tmp/conf en /tmp/backup:

$ cp -avr /tmp/conf/ /tmp/backup

3 votos

Esto no es lo que pide la pregunta.

0 votos

(Usar -r con -a es redundante; en gnu cp -a es lo mismo que "-dr --preserve=all")

1 votos

cp: las opciones -R y -r no pueden especificarse juntas.

3voto

vimal krishna Puntos 111

Si hay dos carpetas: (con permiso de escritura)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

Si estás dentro de la carpeta llamada PORTAL donde quieres copiar todo el contenido de otra carpeta digamos DATOS al mismo nivel entonces harás

vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .

Tienes que fijarte en 2 puntos. El último punto dice copiar aquí en la carpeta actual

y

uno que sigue a /DATA/. dice que todo el CONTENIDO dentro de la carpeta DATA para ser copiado, y no la carpeta DATA en sí.

Si se elimina el "." final de /DATA/

entonces toda la carpeta DATA se copiará dentro de PORTAL (desde donde se está copiando).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: