2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

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?

Respuestas (3)

117
117
117
2010-12-15 15:49:02 +0000
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.

11
11
11
2010-12-15 16:07:16 +0000

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.

9
9
9
2010-12-15 19:54:18 +0000

Me gusta

cp -axv source dest

Rsync es otra buena herramienta para esto

rsync -va source dest