Tenemos un sistema de archivos: /foo
Y tenemos otro sistema de archivos: /bar
P:¿Cómo puedo copiar todos los archivos de/foo a/bar?
No tenemos espacio para comprimirlos, sólo para copiarlos. Pero podría haber enlaces simbólicos, enlaces duros en el sistema de archivos. ¡Así que es necesario preservar estos y el propietario, los permisos, la estructura y los archivos ocultos! ¿Cuál es la mejor manera?
extra: archivos con caracteres extraños o archivos de bloques/caracteres también
ACTUALIZAR: ¿podemos usar gzip con esto? Si es necesario copiar a través de la red, la compresión sería muy, muy útil.
Respuesta1
El comentario de Rui.es casi suficiente; esto debería copiar todo, incluidos los archivos ocultos:
cd /foo; tar cpf - . | (cd /bar; tar xpvf -)
(correr como root
).
Si desea comprimir los datos que se copian entre los dos tar
procesos, puede agregar un compresor y un descompresor en la tubería:
cd /foo; tar cpf - . | gzip -9 | (cd /bar; gunzip | tar xpvf -)
Si su versión tar
lo admite, puede usar la z
bandera en su lugar:
cd /foo; tar cpzf - . | (cd /bar; tar xpzvf -)
(La -p
bandera está habilitada de forma predeterminada root
en algunas plataformas, no estoy seguro acerca de AIX).
Respuesta2
Tar, aunque es muy versátil, no conoce muchos problemas subyacentes relacionados con los datos de inodo. Recomiendo encarecidamente una variación de
cd $src; find . | backup -if - | (cd $target; restore -xqf -)
Hace años trabajé esto en un 'script bonito', pero principalmente uso lo anterior en la línea de comando.
Para ver un guión bonito (¡de 2009! ¡eeks!), consulte:http://www.rootvg.net/content/view/301/309/