Copiar un directorio en Unix

Copiar un directorio en Unix

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

Respuesta1

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

-r= recursivo, copia todos los subdirectorios

-f= forzar, si un archivo de destino existente no se puede abrir, elimínelo y vuelva a intentarlo

NotaDebe tener cuidado al utilizar la -fbandera porque sobrescribirá por la fuerza todo lo que copie. Gracias a @Nifle por esta sugerencia.

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

Respuesta2

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

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

¿Por qué diablos harías eso? Debido a que tar tiene una comprensión bastante sofisticada deEnlacesduro y simbólico.

¿Quieres copiar para reemplazar enlaces simbólicos existentes por 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 sensatos, pero le permite ser muy específico al respecto.

Respuesta3

Me gusta

cp -axv source dest

Rsync es otra buena herramienta para esto.

rsync -va source dest

información relacionada