Copiar un directorio en Unix


78

¿Cómo puedo copiar una estructura de directorio, dir1, a dir2, (con todos los subdirectorios) en Unix usando la ventana de terminal?


2
"cp -r / dir1 / dir2" ¿Es correcto?
Dinesh Kumar

Si, eso es correcto. Es posible que desee marcar una de las respuestas como su solución.
qroberts

Respuestas:


115
cp -rf /source/path/ /destination/path/

-r = recursivo, copia todos los subdirectorios

-f = forzar, si no se puede abrir un archivo de destino existente, elimínelo e intente nuevamente

Nota Debe tener cuidado al usar la -fbandera porque sobrescribirá forzosamente todo lo que copie. Gracias @Nifle por esta sugerencia.

Es posible que desee utilizar el comodín * para copiar todos los archivos en el directorio si es necesario.


11
No estoy de acuerdo con que debas usar la fbandera. -f if an existing destination file cannot be opened, remove it and try again
Nifle

Personalmente, siempre uso la bandera -f. No es una buena práctica, entonces quizás tengas razón.
qroberts

Si sabe lo que hace y sabe lo que está haciendo, está bien. Pero en este caso con un usuario inexperto podría no ser adecuado.
Nifle

@Nifle Sí, entiendo lo que estás diciendo. Solo que si lo fuerza, las posibilidades de que funcione son mejores que si no lo hiciera. Todo depende de lo que esté haciendo y de que comprenda lo que hace.
qroberts

Si pone una nota en su respuesta acerca de que la -fbandera es útil si está copiando <source> over <dest> (como al sobrescribir cosas en <dest>), yo mismo la
votaré

11

Si bien las cp -Rrespuestas son correctas (por cierto, el caso de la bandera en BSD debe ser mayúscula, ambas son compatibles con Linux), hay un viejo encantamiento que involucra alquitrán :

$ tar cf - . | (cd DIR; tar xf - )

¿Por qué diablos harías eso? Porque el alquitrán tiene una comprensión bastante sofisticada de los enlaces tanto duros como simbólicos.

¿Desea copiar para reemplazar los enlaces simbólicos existentes con uno que tenga el mismo texto? ¿O con enlaces al mismo objetivo (ajustando rutas relativas para compensar)? ¿O con copias bit a bit del objetivo?

Si dos archivos en el original están vinculados, ¿la nueva estructura debería tener dos copias de los datos o solo una?

Decisiones decisiones. Tar tiene valores predeterminados razonables, pero le permite ser muy específico al respecto.


9

me gusta

cp -axv source dest

Rsync es otra buena herramienta para esto

rsync -va source dest
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.