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

740

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

¿Alguien podría proporcionarme un ejemplo de la sintaxis de línea de comandos requerida para lograr esto?

pandisvezia
fuente

Respuestas:

1116

Puede copiar el contenido de una carpeta /sourcea otra carpeta existente /destcon el comando

cp -a /source/. /dest/

La -aopción es una opción recursiva mejorada, que conserva todos los atributos del archivo y también conserva los enlaces simbólicos.

El .final de la ruta de origen es una cpsintaxis específica que permite copiar todos los archivos y carpetas, incluidos los ocultos.

enzotib
fuente
@enzotib Estoy tratando de usar este comando para copiar el contenido de "Descargas / texto de texto" a "~ / .config / inkscape / extensions /". Con su comando, escribo "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/". pero esto no funciona
Funzies 05 de
@Funzies: probablemente tu comando debería ser:cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/
enzotib
Agregue una -pmarca como para preservar los permisos de archivo y las marcas de tiempo. cp -ap /var/www/original.com/images/. /var/www/new.com/images/
Dylan Valade
3
@DylanValade: -aya implica --preserve=all, que es más amplio que -p = --preserve=mode,ownership,timestamps.
enzotib
1
@BennyNeugebauer: scpse usa para copiar a través de una red (a través ssh) y solo cifra el canal de comunicación, no los archivos en el sistema de archivos de destino.
enzotib
129

Una alternativa es rsync

rsync -r source/ destination

Las ventajas de rsync son:

  1. Después de la sincronización inicial, copiará solo los archivos que han cambiado.

  2. Puede usarlo en una red, conveniente para archivos en $ HOME, especialmente archivos de configuración.

Pantera
fuente
55
Creo que no necesitas el asterisco. rsync -r source/ destinationdebería ser suficiente, no?
Joschua
1
Este es más apropiado: 'rsync -rtvp source / * destination'
shridutt kothari
-r no funciona para archivos / carpetas ocultos
Nam G VU
1
Esto no copiará archivos ocultos, ya que bash expande * solo a archivos no ocultos. La solución de @Joschua es más segura.
sauerburger
rsync copiará todo el directorio, incluidos los archivos ocultos, si usa el seguimiento / sin un *, por lo que rync source/ destobviamente las personas deberán personalizar el comando rsync para que funcione como lo deseen.
Panther
78

Digamos que tiene una carpeta llamada carpeta1 en su ~, dentro de la carpeta1 hay 1 archivo llamado archivo1 y 2 carpetas llamadas sub1 y sub2, cada una con otros archivos y carpetas dentro de ellas.

Para copiar todo el contenido de ~/folder1a ~/new_folder1usted utilizaría

cp -r ~/folder1/. ~/new_folder1

new_folder1contendría todos los archivos y carpetas de folder1.

cpes el comando para copiar usando un terminal, lo -rhace recursivamente (por lo tanto, el directorio actual + otros directorios dentro del actual) ~/folder1es la carpeta de origen, ~/new_folder1es la carpeta de destino para los archivos / carpetas dentro del origen.

Bruno Pereira
fuente
55
no captura archivos ocultos
Portablejim
1
Gracias Bruno! Me ayudó a entender la sintaxis, aunque tuve que cambiarla un poco (eliminar el signo ~). Tal vez porque la carpeta de destino estaba en / opt, que reside en otro sistema de archivos. ¡Y gracias Portablejim para recordar lo del archivo oculto!
pandisvezia
44
El período final es importante. Sin él, a veces puede crear un nuevo subdirectorio en ~/new_folder1/folder1lugar de copiar el contenido.
wisbucky
1
¿Por qué no?cp -r ~/folder1/* ~/new_folder1
Alex78191
@ Alex78191[root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]#
Bruno Pereira
14

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

cp Command

cpes 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, copie la /home/vivek/letterscarpeta y todos sus archivos al /usb/backupdirectorio:

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

Dónde,

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

-v : Explique lo que se está haciendo.

-r: Copie directorios de forma recursiva. Ejemplo

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

$ cp -avr /tmp/conf/ /tmp/backup
Dilip Rajkumar
fuente
3
Esto no es lo que pregunta la pregunta.
AStopher
(Usar -r con -a es redundante; en gnu cp -a es lo mismo que "-dr --preserve = all")
cristoper
1
cp: las opciones -R y -r pueden no especificarse juntas.
IgorGanapolsky
4

Ejemplo simple.

Copie el directorio dir_1 y su contenido (_files_) en el directorio dir_2 :

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_

Copie el contenido (_files_) solo de dir_1 en el directorio dir_2 :

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_*

_files_ es un marcador de posición para los archivos reales ubicados en el directorio.

Karl Morrison
fuente
2

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á dentro de la carpeta llamada PORTAL donde desea copiar todo el contenido de otra carpeta, diga DATOS al mismo nivel, entonces lo hará

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

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

y

uno siguiente / DATOS /. dice que todos los CONTENIDOS dentro de la carpeta DATA se copiarán, y no la carpeta DATA en sí.

Si elimina este "." de / DATA /

entonces toda la carpeta DATA se copiará dentro del PORTAL (desde donde está haciendo frente).

vimal krishna
fuente