Estoy buscando transferir datos a través de 2 niveles de un servidor HP-UX. Tengo que hacer un par de esas transferencias, algunas de las cuales son en su mayoría binarias (espacio de tabla de Oracle...) y otras son más archivos de texto (registros...). El tamaño de los datos utilizados de los volúmenes está entre 100 Gb y 1 Tb. Además, cambiaré el tamaño del bloque de 1K a 8K en algunas de estas particiones...
Cosas que estoy buscando:
- Garantiza la integridad de los datos
- Velocidad de transferencia de datos más rápida
- Mantiene la propiedad y los permisos de los archivos
En este momento, he pensado en dd, cp y rsync, pero no estoy seguro de cuál es el mejor y cuál es la mejor manera de usarlos...
Respuesta1
No quieres usar dd. Esto es para trabajar en 1 archivo o secuencia, no en un sistema de archivos completo.
rsync está diseñado para hacer lo que quieras, pero como indica el cartel anterior y como han demostrado mis pruebas, no es el más rápido. Esto se debe a que es para hacer algo como esto: "Ok, estoy mirando el archivo A. ¿Está el archivo A en el destino? Si es así, ¿es más nuevo, más antiguo o el mismo?". Etc. rsync es un poco complicado porque debe ejecutarse más de una vez... como su nombre lo indica, es para sincronizar dos ubicaciones.
Para hacer el tipo de cosas que desea, he descubierto que una copia tar es rápida, fácil y confiable. Tar sabe acerca de los enlaces físicos. Tar sabe de dispositivos. Tar maneja casi cualquier situación con la que te encuentres en tu sistema de archivos (excepto rutas realmente largas y, si no estás usando Gnu tar, es posible que tengas que tener cuidado al poner / al principio de tu nombre de ruta).
De todos modos, he tenido un 99,98% de éxito durante los últimos 20 años haciendo esto:
cd /my/source; tar cf - subdirectory | (cd /destination/path; tar xf -)
...El subdirectorio que desea copiar aparecerá en /destino/ruta.
Si desea observar su progreso, puede usar "xvf" en lugar de "xf" en la última parte de esa cadena.
...mis fallos del 0,02% se deben a rutas de archivos realmente largas... :-(
Tar no garantizará la integridad del archivo. Dicho esto, siempre que no vea ningún mensaje de error, creo que es muy confiable. Mantendrá los permisos y la propiedad correctamente.
¡PERO! Su publicación menciona específicamente la integridad de los archivos y me disculpo por no incluir una solución en mi respuesta de hace muchos años...
Después del alquitrán, simplemente hago esto. Finge que he hecho un
cd /path/to/source/dir; tar cf - * | (cd /path/to/dest/dir; tar xf -)
Ahora, la garantía de su archivo se puede hacer así:
find * -exec md5sum {} /path/to/dest/dir/{} \; > /path/to/dest/dir/md5-manifest.txt
Cuando termine, puede observar el archivo de manifiesto o escribir un script awk (dejado como ejercicio para el usuario) para comparar la salida de dos líneas de los comandos find/md5sum.
Respuesta2
Mira estoesta publicación. Algunas respuestas sugirieron usar tar
. Otros sugirieron usar rsync
. Se están ocupando de copiar datos entre dos máquinas. Su problema es similar, pero necesita copiar los archivos localmente en lugar de hacerlo a través de la red.
Respuesta3
Recomendaría usar rsync
, ya que tiene funciones que abordan específicamente la mayoría de sus inquietudes. Si utiliza las opciones adecuadas (por ejemplo, la -a
opción), se conservarán todas las propiedades, permisos y horas de los archivos. Además, rsync
utiliza automáticamente sumas de verificación para garantizar que todos los archivos transferidos lleguen intactos al destino, de modo que se garantice la integridad de los datos (suponiendo que la ejecución sea exitosa).
El único punto dondersync
puedeLo que no es óptimo es la velocidad, especialmente si se compara con una alternativa más liviana como cp
, pero dudo que notes mucha diferencia, a menos que tu potencia de procesamiento sea muy baja.
Respuesta4
Básicamente tienes tres opciones:
- Copie todo el dispositivo de partición/bloque
- Volcar todo el sistema de archivos
- Copia los datosadentroel sistema de archivos
Seleccione una de las tres opciones dependiendo de lo que tenía que respaldar y de los resultados que desea obtener. Para su caso específico, creo que la opción n.1 (bloquear copia del dispositivo) junto conddrescatees el camino a seguir. De todos modos, veamos una colección de opciones disponibles.
Caso 1: copia de partición
PRO: al copiar un dispositivo de bloque completo, estás seguro de que quedó nota.
CONTRA: molestarse con los dispositivos de bloqueo es menos conveniente que trabajar con archivos, la selección del dispositivo de bloqueo u opciones incorrectas puede destruir sus datos.
Si desea tener una copia binaria de un desarrollador de bloque completo, debe usar dd o una herramienta similar. Otras herramientas muy útiles sondcfldd(una bifurcación dd lista para hash) yddrescate(una herramienta similar a dd aún más avanzada).
Caso 2: volcado del sistema de archivos
PRO: al copiar un sistema de archivos completo, está seguro de que se realizó una copia de seguridad de todos los datos y metadatos que contiene.
CONTRA: si tiene varios sistemas de archivos para respaldar, tenía que realizar varias pasadas (una para el sistema de archivos)
Una herramienta útil para tratar con sistemas de archivos esArchivo FS. Además, muchos sistemas de archivos tienen utilidades integradas para volcar su contenido de manera eficiente (por ejemplo: XFS tiene xfsdump, Ext2/3/4 usa dumpe2fs, etc.).
Caso 3: copiar los datos dentro del sistema de archivos
PRO: al copiar datos desde el interior del sistema de archivos, puedes seleccionar muy específicamente qué respaldar. Esto garantiza un tiempo de copia de seguridad/restauración rápido e imágenes de copia de seguridad pequeñas.
CONTRA: Tenías que saber perfectamente qué respaldar y cómo. Se debe tener especial cuidado con los metadatos importantes (por ejemplo: propietario, permiso, ACL, EA...)
sincronizaciónes tu mejor amigo aquí.Instantáneaycopia de seguridad rdiffSon herramientas maravillosas construidas sobre rsync/librsync.Alquitránes la navaja suiza de cualquier administrador de sistemas Unix.