
¿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 -f
bandera 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 -R
respuestas 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