¿Cómo puedo copiar una estructura de directorio, dir1, a dir2, (con todos los subdirectorios) en Unix usando la ventana de terminal?
¿Cómo puedo copiar una estructura de directorio, dir1, a dir2, (con todos los subdirectorios) en Unix usando la ventana de terminal?
Respuestas:
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 -f
bandera 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.
f
bandera. -f if an existing destination file cannot be opened, remove it and try again
-f
bandera es útil si está copiando <source> over <dest> (como al sobrescribir cosas en <dest>), yo mismo la
Si bien las cp -R
respuestas 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.
me gusta
cp -axv source dest
Rsync es otra buena herramienta para esto
rsync -va source dest