Copiar un directorio en Unix
¿Cómo puedo copiar una estructura de directorios, dir1, a dir2, (con todos los subdirectorios) en Unix utilizando la ventana del terminal?
¿Cómo puedo copiar una estructura de directorios, dir1, a dir2, (con todos los subdirectorios) en Unix utilizando la ventana del terminal?
cp -rf /source/path/ /destination/path/
-r
= recursivo, copia todos los subdirectorios
-f
= forzado, si un archivo de destino existente no puede ser abierto, elimínelo e inténtelo de nuevo
Nota Debe tener cuidado al usar la bandera -f
porque sobreescribirá a la fuerza cualquier cosa que copie. Gracias a @Nifle por esta sugerencia.
Puede usar el comodín * para copiar todos los archivos del directorio si lo necesita.
Mientras que las respuestas cp -R
son correctas (BTW el caso de la bandera en BSD debe ser mayúscula, ambas son soportadas en linux), hay un viejo encantamiento que involucra a tar :
$ tar cf - . | (cd DIR; tar xf - )
¿Por qué diablos haría eso? Porque tar tiene una comprensión bastante sofisticada de los enlaces tanto duros como simbólicos.
¿Quieres que la copia reemplace los enlaces simbólicos existentes con uno que tenga el mismo texto? ¿O con enlaces al mismo objetivo (ajustando las rutas relativas para compensar)? ¿O con copias a nivel de bits del objetivo?
Si dos archivos en el original están enlazados duramente, ¿debe la nueva estructura tener dos copias de los datos o sólo una?
Decisiones, decisiones. Tar tiene unos valores por defecto razonables, pero te permite ser muy específico al respecto.
Me gusta
cp -axv source dest
Rsync es otra buena herramienta para esto
rsync -va source dest