Cómo elegir una estrategia de copias de seguridad efectiva para tu VPS

Introducción

Una consideración importante al almacenar tu trabajo y datos en un entorno digital es cómo asegurarte de que tu información estará disponible siempre.

Esto puede significar muchas cosas diferentes dependiendo de qué aplicaciones estés utilizando.  Debes considerar qué tan importante es tener una tolerancia a fallos inmediata y qué tipo de problemas estás anticipando.

En esta guía, analizaremos algunos de los diferentes enfoques para proporcionar copias de seguridad y redundancia de datos. Debido a que los diferentes casos de uso exigen diferentes soluciones, no podremos darte una respuesta única para todos. Empero, aprenderás qué es importante en diferentes escenarios y qué implementación (o implementaciones) son las más adecuadas para tu operación.

En la primera parte de esta guía, discutiremos las diferentes soluciones de copia de seguridad (backup) que puedes usar.

Discutiremos los méritos relativos de cada una para que puedas elegir el plan que se ajuste a tu entorno. En la segunda parte, discutiremos las opciones de redundancia.

¿Cuál es la diferencia entre redundancia y copia de seguridad?

Las definiciones de los términos redundancia y copia de seguridad menudo se superponen y, en muchos casos, se confunden. Estos son dos conceptos distintos que están relacionados, pero son diferentes. Algunas soluciones proporcionan ambos.

Redundancia

La redundancia en los datos significa que hay una tolerancia a fallos inmediata en caso de un problema del sistema. Una tolerancia a fallos significa que, si un conjunto de datos no está disponible, otra copia se cambia inmediatamente a producción para ocupar su lugar.

Esto resulta en un tiempo de inactividad casi imperceptible y la aplicación o el sitio web pueden continuar atendiendo solicitudes como si nada hubiera pasado. Mientras tanto, el administrador del sistema (tú) tiene la oportunidad de solucionar el problema y devolver el sistema a un estado completamente operativo.

Si bien esto puede parecer que también serviría como una excelente solución de copia de seguridad, esta es una falacia peligrosa. La redundancia no proporciona protección contra una falla que afecta a toda la máquina o sistema.

Por ejemplo, si tienes un RAID duplicado configurado (como RAID 1), tus datos son redundantes ya que, si una unidad falla, la otra seguirá estando disponible. Sin embargo, si la máquina falla, todos tus datos podrían perderse.

Otra desventaja de este tipo de configuración es que cada operación se realiza en todas las copias de los datos. Esto incluye operaciones maliciosas o accidentales. Una verdadera solución de copia de seguridad o respaldo te permitiría restaurar desde un punto anterior donde se sabe que los datos son buenos.

Copia de seguridad

Como ya hemos mencionado, es imprescindible que mantengas copias de seguridad funcionales de tus datos importantes. Dependiendo de tu situación, esto podría significar hacer un respaldo de la aplicación, datos del usuario, o de todo un sitio web o máquina.

La idea detrás de las copias de seguridad es que, en el caso de un sistema o máquina falle u ocurra una pérdida de datos. Con el respaldo puedas restaurar y volver a implementar o acceder a tus datos.

La restauración desde una copia de seguridad puede requerir tiempo de inactividad.  No obstante, puede significar la diferencia entre comenzar desde un punto hace un día y comenzar desde cero. Cualquier cosa que no puedas permitirte perder debería, por definición, ser respaldada.

En términos de métodos, hay bastantes niveles diferentes de copias de seguridad. Estos pueden colocarse en capas según sea necesario para dar cuenta de los diferentes tipos de problemas.

Por ejemplo, puedes hacer una copia de seguridad de un archivo de configuración antes de modificarlo para que puedas volver fácilmente a tu configuración anterior en caso de que surja un problema. Esto es ideal para pequeños cambios que estás monitoreando activamente. Sin embargo, esta configuración fallaría miserablemente en el caso de una falla de disco o algo más complejo. También debes tener copias de seguridad automáticas y regulares en una ubicación remota.

Las copias de seguridad por sí mismas no proporcionan tolerancia a fallos automática. Esto significa que tus fallas pueden no costarte ningún dato (suponiendo que tus copias de seguridad estén 100% actualizadas), pero pueden costarte tiempo de actividad. Esta es una de las razones por las cuales la redundancia y las copias de seguridad se usan con mayor frecuencia en conjunto. No necesariamente se excluyen.

Copia de seguridad a nivel de archivo

Una de las formas más familiares de copia de seguridad es una copia de seguridad a nivel de archivo. Este tipo de respaldo utiliza herramientas de copia de nivel de sistema de archivos normales para transferir archivos a otra ubicación o dispositivo.

Cómo usar el comando cp

La forma más simple de hacer una copia de seguridad de una máquina Linux, como tu VPS, es con el comando cp. Esto simplemente copia archivos de una ubicación local a otra.

En una computadora local, puedes montar una unidad extraíble y luego copiar archivos en ella:

Este ejemplo monta un disco extraíble y luego copia el directorio /etc en el disco. Luego desmonta la unidad, que se puede almacenar en otro lugar.

Cómo usar Rsync

Una mejor alternativa a cp es el comando rsync, que se puede utilizar para realizar copias de seguridad locales con mayor flexibilidad. Podemos realizar la misma operación que arriba usando rsync con estos comandos:

Si bien esto es simple y directo, te darás cuenta rápidamente de que las copias de seguridad en el sistema de archivos local son engorrosas y problemáticas.

Debes conectar y desconectar físicamente la unidad de respaldo y transportarla a otro lugar si deseas conservar los datos en caso de robo o incendio. Puedes lograr muchas de las mismas ventajas utilizando copias de seguridad en red.

Rsync puede realizar copias de seguridad remotas tan fácilmente como puede completar copias de seguridad locales. Solo necesitas usar una sintaxis alternativa. Esto funcionará en cualquier host en el que puedas usar SSH, siempre que rsync esté instalado en ambos extremos:

Esto hará una copia de seguridad del directorio /etc de la máquina local en el directorio remote_host ubicado en /backup. Esto tendrá éxito si tienes permiso para escribir en este directorio y hay espacio disponible.

Para obtener más información sobre cómo usar rsync para hacer una copia de seguridad, haz clic aquí.

Cómo usar otras herramientas de copia de seguridad

Si bien cprsync son simples y se pueden utilizar fácilmente, no siempre son la solución ideal. Para automatizar las copias de seguridad, necesitarás escribir esas utilidades y escribir cualquier código necesario para la rotación y otras sutilezas.

Afortunadamente, hay algunas utilidades que realizan fácilmente procedimientos de copia de seguridad más complejos.

Bacula

La utilidad Bacula es una solución compleja y flexible que aprovecha el modelo cliente– servidor para respaldar hosts. Bacula separa las ideas de clientes, ubicaciones de respaldo y directores (el componente que organiza el respaldo real). También configura cada tarea de respaldo en una unidad llamada “job”.

Esto permite una configuración extremadamente granular y flexible. Puedes hacer una copia de seguridad de varios clientes en un dispositivo de almacenamiento. O un cliente en varios dispositivos de almacenamiento y modificar el esquema de copia de seguridad rápida y fácilmente agregando nodos o ajustando sus detalles.

Funciona bien en un entorno en red y es ampliable y modular. Esta utilidad es ideal para realizar copias de seguridad de un sitio o aplicación distribuidos en varias máquinas.

BackupPC

Otra solución popular es BackupPC. BackupPC se puede usar para hacer una copia de seguridad de los sistemas Linux y Windows fácilmente. Se instala en una máquina o VPS que actuará como servidor de respaldo. Este servidor luego “extrae” los datos de sus clientes utilizando métodos regulares de transferencia de archivos.

Esta configuración ofrece la ventaja de instalar todos los paquetes relevantes en una máquina centralizada. La única necesidad de configuración del lado del cliente es permitir el acceso SSH al servidor de respaldo. Esto se puede configurar fácilmente.

Esto te permitiría configurar las copias de seguridad desde el servidor de respaldo fácilmente e implementar tus entornos de producción limpiamente, sin software adicional.

Duplicity

Duplicity es otra gran alternativa a las herramientas tradicionales. El principal reclamo de diferenciación de Duplicity es que utiliza el cifrado GPG para transferir y almacenar los datos. Esto tiene algunas ventajas notables.

El beneficio obvio de usar el cifrado GPG para las copias de seguridad de archivos es que los datos no se almacenan en texto sin formato. Solo el propietario de la clave GPG puede descifrar los datos.

Esto proporciona cierto nivel de seguridad para compensar el aumento de las medidas de seguridad necesarias cuando tus datos se almacenan en múltiples ubicaciones.

El otro beneficio que puede no ser inmediatamente evidente para aquellos que no usan GPG regularmente es que cada transacción se verifica como completamente precisa. GPG impone una estricta comprobación de hash para garantizar que no haya pérdida de datos durante la transferencia.

Esto significa que cuando llegue el momento de restaurar los datos de una copia de seguridad, será mucho menos probable que tengas problemas de corrupción de archivos.

Copias de seguridad a nivel de bloque

Una alternativa menos común, pero importante a las copias de seguridad a nivel de archivo son las copias de seguridad a nivel de bloque.

Este estilo de copia de seguridad también se conoce como “imágenes” porque puede usarse para duplicar y restaurar dispositivos completos. Las copias de seguridad a nivel de bloque te permiten copiar en un nivel más profundo que un archivo.

Si bien una copia de seguridad basada en archivos puede copiar el archivo1, el archivo2 y el archivo3 en una ubicación de copia de seguridad. Un sistema de copia de seguridad basado en bloques copiará todo el “bloque” en el que residen esos archivos.

Otra forma de explicar el mismo concepto es decir que las copias de seguridad a nivel de bloque copian información bit tras bit. No les importan los archivos abstractos que pueden estar representados por esos bytes (pero los archivos se transferirán intactos a través del proceso).

Una ventaja de las copias de seguridad a nivel de bloque es que generalmente son más rápidas. Las copias de seguridad basadas en archivos generalmente inician una nueva transferencia para cada archivo por separado.

Por su parte una copia de seguridad basada en bloques transferirá bloques, que generalmente son más grandes. Esto conlleva que se deben iniciar menos transferencias para completar la copia.

Uso de dd para realizar copias de seguridad a nivel de bloque

La forma más sencilla de realizar copias de seguridad a nivel de bloque es probablemente con la utilidad dd. Este software es muy flexible, pero nos permite copiar información bit a bit en una nueva ubicación.

Esto significa que podemos hacer una copia de seguridad de una partición o disco en un solo archivo o un dispositivo sin formato sin ningún paso preliminar.

La forma más básica de hacer una copia de seguridad de una partición o disco es usar dd de esta manera:

En este escenario, if= especifica el dispositivo de entrada o la ubicación. El of= indica el archivo de salida o la ubicación. Es muy importante recordar esta distinción, porque es trivial borrar un disco completo si se invierte.

Si deseas hacer una copia de seguridad de la partición que contiene tus documentos, que se encuentra en /dev/sda3, puedes crear un archivo de imagen como este:

Hay varias otras soluciones de respaldo a nivel de bloque disponibles para máquinas Linux, pero no las discutiremos aquí.

Copias de seguridad de versiones

Una de las razones principales para hacer una copia de seguridad de los datos es poder restaurar una versión anterior de un archivo o grupos de archivos. Esto en caso de un cambio o eliminación no deseada.

Los mecanismos de copia de seguridad mencionados hasta ahora proporcionan esto hasta cierto punto. También puedes implementar un sistema más robusto utilizando algunas herramientas adicionales.

La forma manual de lograr esto es crear un archivo de copia de seguridad antes de la edición, así:

Incluso podrías automatizar este proceso creando archivos ocultos con marca de tiempo cada vez que modifiques un archivo con tu editor. Por ejemplo, podrías colocar esto en tu archivo ~/.bashrc:

Ahora, cuando llames al comando “nano”, creará automáticamente copias de seguridad.

Esto proporcionará cierto nivel de respaldo, pero es muy frágil y puede llenar rápidamente un disco si estás editando archivos con frecuencia. No es una gran solución y puede terminar siendo mucho peor que copiar manualmente los archivos que vas a editar.

Control de versiones

Una alternativa que resuelve muchos de los problemas inherentes a este diseño es el uso git, que es específicamente un sistema de control de versiones. Aunque puede no ser obvio, puedes usar git para controlar casi cualquier tipo de archivo.

Puedes crear un repositorio git en tu directorio de inicio instantáneamente, simplemente escribiendo esto:

Probablemente necesites ajustar la configuración aquí para excluir ciertos archivos, pero en general, crea versiones complejas al instante. Luego puedes agregar el contenido de tu directorio y confirmar los archivos con esto:

También puede desplazarte fácilmente a una ubicación remota utilizando el sistema integrado de git:

Este no es un gran sistema para realizar copias de seguridad por sí solo. Empero combinado con otro sistema de copias de seguridad, este tipo de control de versiones puede proporcionar un control muy detallado de los cambios que realices.

Para obtener más información sobre cómo usar git y cómo se puede usar git para versionar archivos normales, debes consultar estos enlaces.

Copias de seguridad a nivel de VPS

Si bien es importante administrar las copias de seguridad tú mismo, la mayoría de empresas de alojamiento proporcionan algunos mecanismos para complementar tus propias copias de seguridad. Para eso debes consultar con tu proveedor sobre las opciones de las que dispones.

Continuará…

En este artículo, discutimos principalmente diferentes conceptos y soluciones de copias de seguridad. En la parte 2, repasaremos algunas opciones para habilitar la redundancia.