Artefacto del sistema Linux de copia de seguridad: rsync

Explore el papel de rsync en las soluciones de copia de seguridad. Las copias de seguridad son, sin duda, una parte importante del trabajo de un administrador de sistemas. Cuando no hay una copia de seguridad completa o una copia de seguridad e implementación bien planificadas, tarde o temprano, los datos importantes pueden perderse irremediablemente.

Todas las empresas, grandes o pequeñas, funcionan con datos. Teniendo en cuenta la pérdida económica y empresarial causada por la pérdida de datos comerciales, ninguna empresa, desde la empresa individual más pequeña hasta la empresa multinacional más grande, puede sobrevivir a la pérdida de la mayoría de sus datos. Su oficina se puede reconstruir con el reembolso del seguro, pero sus datos son imposibles de recuperar.

La pérdida mencionada aquí se refiere al daño total de los datos. En lugar de que se roben los datos, se trata de un tipo diferente de desastre. De lo que estoy hablando aquí es que los datos están completamente destruidos.

Incluso si es un usuario individual y no una empresa, es muy importante hacer una copia de seguridad de sus propios datos. Tengo dos décadas de datos financieros personales y datos de mi negocio ahora cerrado, así como un montón de facturas electrónicas. También incluye una gran cantidad de diferentes tipos de documentos, informes e informes de datos que he escrito en los últimos años. No quiero perder ninguno de estos datos.

Por lo tanto, la copia de seguridad es una garantía necesaria para la seguridad a largo plazo de mis datos.

Selección de software de copia de seguridad

Hay muchos softwares que pueden realizar copias de seguridad. La mayoría de  las distribuciones de Linux  ofrecen al menos un software de copia de seguridad de código abierto. También hay muchos programas de copia de seguridad comerciales, pero ninguno se adapta a mis necesidades, por lo que decidí utilizar las herramientas básicas de Linux para la copia de seguridad.

En mi artículo para el Anuario de código abierto, "Mejores socios 2015: tar y ssh", mostré que el costoso software comercial de respaldo no es necesario para diseñar e implementar un plan de respaldo viable.

Desde el año pasado he probado otra opción, el  comando rsync , que tiene muchas funciones interesantes de las que ya me he beneficiado. Mi principal requisito es que en la copia de seguridad creada, el usuario pueda localizar y restaurar los archivos sin descomprimir el archivo de copia de seguridad, para ahorrar tiempo en la creación de la copia de seguridad.

El propósito de esta publicación es solo ilustrar el papel de rsync en mi esquema de copia de seguridad. Esta no es una descripción general de las capacidades completas de rsync o sus diversos casos de uso.

comando rsync 

Andrew Tridgell y Paul Mackerras escribieron rsync, lanzado por primera vez en 1996. Su objetivo es sincronizar archivos a otra computadora. ¿Te diste cuenta por qué tomaron el nombre (sincronización remota)? Es un software de código abierto disponible en la mayoría de las distribuciones.

rsync se puede usar para sincronizar dos directorios o árboles de directorios, ya sea que estén en la misma computadora o en computadoras diferentes, y no solo eso, sino que puede hacer más. El directorio que crea o actualiza es exactamente el mismo que el directorio de origen. El nuevo directorio no se almacena en un paquete como tar o zip, sino en directorios y archivos comunes, a los que se puede acceder fácilmente con las herramientas comunes de Linux, que es exactamente lo que necesito.

Una de las características más importantes de rsync es la forma en que maneja los archivos existentes en el directorio de origen que se está modificando. Utiliza la verificación de bloques para comparar los archivos de origen y destino, en lugar de copiar todo el archivo desde el origen hasta el pasado. Si las sumas de comprobación de todos los bloques de los dos archivos son iguales, no se transfiere ningún dato. De lo contrario, solo se transmiten los bloques modificados. Esto ahorra mucho tiempo y ancho de banda consumido por la sincronización remota. Por ejemplo, la primera vez que usé el  script rsync para hacer una copia de seguridad de todos mis hosts en un disco duro externo USB grande, me tomó tres horas porque todos los datos debían transferirse. Las copias de seguridad posteriores pueden tardar entre 3 y 8 minutos, según la cantidad de archivos que se hayan creado y cambiado desde la última copia de seguridad. Uso el comando de tiempo para registrar el tiempo real empleado. Anoche, me llevó solo tres minutos hacer una copia de seguridad de unos 750 Gb de datos de seis sistemas remotos y una estación de trabajo local. Solo es necesario realizar una copia de seguridad de unos pocos cientos de Mb de datos que cambian durante el día.

El siguiente comando se puede usar para sincronizar el contenido de dos directorios y cualquier subdirectorio. Es decir, después de sincronizar el contenido del nuevo directorio y el directorio de origen, su contenido es exactamente el mismo.

rsync -aH directorio de origen directorio de destino

La opción -a indica el modo de archivo, que conserva los permisos, la propiedad y los enlaces simbólicos (suaves). La opción -H se usa para mantener enlaces duros. Tenga en cuenta que tanto el directorio de origen como el de destino pueden estar en el host remoto.

Supongamos que sincronizamos dos directorios usando rsync ayer. Hoy queríamos volver a sincronizar, pero eliminamos algunos archivos del directorio de origen. De forma predeterminada, rsync solo copia los archivos nuevos y modificados en el nuevo directorio, y no cambia los archivos que eliminamos en el nuevo directorio, pero si desea que los archivos que se eliminaron en el directorio de origen se eliminen en el nuevo directorio, luego puede agregar la opción --delete para eliminar.

Otra opción interesante, y mi favorita personal, es --link-dest, porque aumenta enormemente el poder y la flexibilidad de rsync. --link-dest Realiza copias de seguridad diarias que ocupan poco espacio adicional y toman muy poco tiempo.

Use esta opción para especificar el directorio de copia de seguridad del día anterior y el directorio de copia de seguridad de hoy, luego rsync creará el nuevo directorio de copia de seguridad de hoy y creará un enlace físico para cada archivo en el directorio de copia de seguridad de ayer en el directorio de copia de seguridad de hoy. Ahora tenemos un montón de enlaces duros que apuntan a la copia de seguridad de ayer en el directorio de copia de seguridad de hoy. Los archivos no se crean repetidamente, pero se crean algunos vínculos físicos. Para enlaces duros, hay una descripción muy detallada en Wikipedia. Y después de crear la copia de seguridad de hoy con un enlace fijo al archivo del directorio de copia de seguridad de ayer, rsync hace la copia de seguridad como de costumbre, y si se detecta un cambio en el archivo, no crea un enlace fijo, sino que crea uno desde el directorio de copia de seguridad de ayer. y luego copie la parte modificada del archivo de origen. (Anotación de LCTT: parece que el texto original no está claro aquí, vea la función try_dests_reg de generator.c para seleccionar copiar o vincular de acuerdo con el nivel de coincidencia primero, en lugar de crear un vínculo permanente y luego juzgar el nivel de coincidencia)

Ahora nuestro comando se ve así.

rsync -aH --delete --link-dest=yesterdaystargetdir sourcedir todaystargetdir

También es posible que desee excluir algunos directorios o archivos de los que no desea realizar una copia de seguridad. Entonces puede usar la opción --exclude. Utilice esta opción para agregar el patrón de archivos o directorios que desea excluir. Puede excluir el caché de su navegador con el nuevo comando a continuación.

rsync -aH --delete --exclude Cache --link-dest=yesterdaystargetdir sourcedir todaystargetdir

Nota: Cada patrón de archivos que desea excluir debe estar precedido por la opción --exclude por separado.

rsync puede sincronizar hosts remotos, ya sea como fuente o como destino. Para dar otro ejemplo, supongamos que queremos sincronizar el directorio del host remoto llamado remoto1 con el local. Dado que ssh es el protocolo predeterminado para intercambiar datos con hosts remotos, he estado usando la opción ssh. Ahora el comando se ve así.

rsync -aH -e ssh --delete --exclude Cache --link-dest=yesterdaystargetdir remote1:sourcedir todaystargetdir

Esta es la versión final de mi comando de copia de seguridad rsync.

Puede confiar en la gran cantidad de opciones de rsync para personalizar su proceso de sincronización. En su mayor parte, los comandos simples que acabo de describir son suficientes para mis necesidades personales. Puede leer la extensa documentación de rsync para conocer sus otras capacidades.

copia de seguridad de implementación

Mis copias de seguridad se ejecutan automáticamente porque "todo se puede automatizar". Escribí un  script BASH usando rsync para crear copias de seguridad diarias. Esto incluye asegurarse de que los medios de respaldo estén montados, generar el nombre del directorio de respaldo diario, crear la estructura de directorio adecuada en los medios de respaldo y, finalmente, realizar el respaldo real antes de desmontarlos.

Ejecuto un script con cron todas las mañanas para asegurarme de que nunca me olvide de hacer una copia de seguridad.

Mi script rsbu y el archivo de configuración rsbu.conf están disponibles en GitHub: opensourceway/rsync-backup-script: un script para acompañar https://opensource.com/article/17/1/rsync-backup-linux  .

prueba de recuperación

Ningún plan de respaldo está completo sin pruebas. Puede probar restaurar un archivo o un directorio completo para asegurarse de que la copia de seguridad funcione y pueda usarse para recuperarse de la pérdida total de datos. He visto fallar demasiadas copias de seguridad por varias razones, y se pierden datos valiosos debido a la falta de pruebas para ignorar los problemas.

Elija un archivo para restaurar en un directorio de prueba como /tmp para que no sobrescriba ningún archivo que se haya actualizado después de la copia de seguridad. Verifique que el contenido del archivo sea el esperado. Restaurar archivos respaldados con rsync es tan simple como encontrar su archivo de respaldo y copiarlo donde desee restaurarlo.

He tenido que restaurar mis archivos individuales y, en ocasiones, directorios completos varias veces. La mayoría de ellos eliminaron accidentalmente archivos o directorios por sí mismos. Un par de veces se debió a un bloqueo del disco duro. Estas copias de seguridad serán útiles tarde o temprano.

último paso

Pero simplemente crear copias de seguridad no salvará su negocio, necesita crear copias de seguridad regularmente para que la copia de seguridad más reciente se almacene en otra máquina remota, en otro edificio oa millas de distancia si es posible. Esto garantiza que un desastre a gran escala no destruya todas sus copias de seguridad.

Una opción razonable para las pequeñas empresas es hacer copias de seguridad diarias en medios extraíbles, llevarse la copia de seguridad más reciente a casa por la noche y llevar la copia de seguridad más antigua a la oficina a la mañana siguiente. Entonces tendrás varias copias en rotación. Incluso es posible llevar la copia de seguridad más reciente al banco y guardarla en su caja de seguridad, y luego recuperar la copia de seguridad anterior.

Supongo que te gusta

Origin blog.csdn.net/yaxuan88521/article/details/130962339
Recomendado
Clasificación