¿Cómo crear instantáneas de su servidor para realizar copias de seguridad en CentOS 5?

¿Cómo crear instantáneas de su servidor para realizar copias de seguridad en CentOS 5?

Estoy haciendo el cambio de VPS a servidor dedicado. Desafortunadamente, la mayoría de los servidores dedicados no proporcionan copias de seguridad del servidor como lo hacen los VPS administrados y realmente me gusta la tranquilidad de tener una copia de seguridad de todos mis scripts/archivos si algo sale mal (lo ha hecho antes).

Entonces, la pregunta es, ¿es posible crear "instantáneas" de ciertos directorios diariamente que se guardan en el mismo servidor, pero en carpetas diferentes?

Es comprensible que estas copias de seguridad no protejan contra desastres externos. Busco más protección contra cualquier daño causado por scripts maliciosos/piratería, etc.

Respuesta1

Probablemente estés buscando algo como Webmin:http://webmin.com/

Es una parte obligatoria de la configuración de mi servidor CentOS. Es realmente fácil de instalar y facilita la administración del servidor, especialmente la realización de copias de seguridad. Echa un vistazo a la documentación aquí:http://doxfer.webmin.com/Webmin/FilesystemBackup

Respuesta2

¿Es posible crear "instantáneas" de ciertos directorios diariamente que se guardan en el mismo servidor, pero en carpetas diferentes? ... para protección contra cualquier daño causado por scripts maliciosos/piratería, etc.

Sí, cualquiera de losmuchas herramientas de software de control de revisioneseso hará exactamente eso.

Utilizo Mercurial ("hg"), a menudo con la bonita interfaz gráfica de usuario TortoiseHg.

En muchos de mis servidores, existe una carpeta (*), tal vez "/var/www/", que contiene todo lo que quiero respaldar: archivos de configuración, plantillas, scripts cgi-bin personalizados del lado del servidor, navegador personalizado. scripts laterales .js, contenido .html, etc. (Todo lo demás en la máquina es sistema operativo repetitivo y elementos de aplicación. Si eso se daña, probablemente lo borraría e instalaría la última versión, en lugar de intentar revertirlo). a la versión antigua y obsoleta que estaba usando).

Cuando configuro las cosas por primera vez, accedo a esa carpeta y hago la configuración única

hg init
hg add
hg commit -u dc -m "initial setup"

La línea "init" crea una carpeta ".hg/" que, algún día, almacenará instantáneas comprimidas. (de ahí el nombre de un popular tutorial de Mercurial,http://hginit.com/). La línea "agregar" y la línea "confirmar", de forma predeterminada, escanean todos los archivos de esa carpeta, sin importar cuán profundamente estén anidados en subcarpetas, y colocan una copia (comprimida) en esa carpeta ".hg/". .

Cuando sospecho que hay daños u otros cambios en los archivos de trabajo (y asumiendo que la carpeta ".hg", que contiene todas las instantáneas, no está dañada), escribo

hg status

que me dice exactamente qué archivos han cambiado, sin importar cuán profundamente estén anidados en alguna subsubcarpeta, luego escribo

hg diff

lo que me dice exactamente qué cambió en cada archivo.

Si no me gusta lo que veo (son modificaciones maliciosas o, más comúnmente, son mis propias ediciones tontas que ahora me arrepiento de haber hecho), escribo

hg revert --all

para revertir todos los cambios a la confirmación más reciente.

Si yohacerMe gusta lo que veo. He modificado algo que realmente lo mejora. Escribo algo como

hg add
hg commit -u dc -m "tweaked .htaccess so we now have Clean URLs."

con un comentario que, con suerte, describe por qué hice estos cambios. (Hay formas de revertir sóloalgunode los archivos, y confirmar soloalgunode los archivos, e incluso formas de confirmar soloalgunode los muchos cambios que se realizaron en un solo archivo (consulte la documentación para obtener más detalles).

Quizás prefieras tener un trabajo cron que diariamente haga algo como

hg add
hg commit -u mr_backup -m "cron automated snapshot of the server."

Una instantánea comprimida de cada versión que se haya confirmado permanece en la carpeta ".hg/". Hay un comando "hg update" para volver a cualquier versión confirmada. Hay un comando "hg diff -r 1:2" para ver exactamente qué cambió entre la primera y la segunda confirmación.

situaciones más complejas

(*) A menudo solo hay una carpeta de la que quiero hacer una copia de seguridad ("/var/www/"). Sin embargo, a veces tengo una situación más compleja: los archivos de los que quiero hacer una copia de seguridad están dispersos en varias carpetas diferentes, y la única carpeta común entre ellos es la carpeta raíz "/", y no quiero poner el repositorio ".hg/" en la carpeta raíz "/.hg/".

Probablemente haya una mejor manera de manejarlo, pero lo que estoy haciendo ahora es:

  • Creo un usuario especial llamado "MrBackup" que tiene permisos de solo lectura para todos los archivos de los que quiero hacer una copia de seguridad.
  • Configuré las cosas para que cada carpeta de la que quiero hacer una copia de seguridad aparezca como una subcarpeta de /home/mr_backup. Actualmente tengo una mezcla aleatoria de:
    • Algunos archivos en realidad están en la carpeta de inicio de MrBackup, y luego el otro lugar donde "necesitan" estar tiene un enlace suave hacia ellos.
    • Algunos archivos tienen un enlace físico a ellos en ambos lugares: el lugar donde "necesitan" estar y también en algún lugar de la carpeta de inicio de MrBackup.
    • Un script cron copia periódicamente algunos archivos de la ubicación "en vivo" en una carpeta de respaldo en la carpeta de inicio de MrBackup, tal vez vuelca una base de datos SQL de otro servidor en un archivo de volcado en la carpeta de inicio de MrBackup y también hace una copia de seguridad del propio script cron ( "crontab -l > /home/mr_backup/backup/crontab.txt").
  • A menudo quiero hacer una copia de seguridad de casi todo lo que hay en alguna carpeta P, excepto una subcarpeta "cache/" de la que no necesito hacer una copia de seguridad, ya que se regenerará automáticamente si es necesario. Utilizo ".hgignore" para excluir la subcarpeta de caché.
  • Luego uso Mercurial, como arriba.
  • Cuando los archivos generados por el script cron no se ven bien, después de revertirlos, debo tomar algunos pasos adicionales para de alguna manera enviar la "buena versión" a la ubicación "activa".

PD: En una máquina en una ciudad diferente a mi servidor, de vez en cuando enciendo TortoiseHg Workbench y hago clic en el pequeño botón que, detrás de escena, ejecuta

hg pull

(y me pide la contraseña de Mr Backup) para obtener una copia de seguridad externa de todo lo que se ha comprometido en el repositorio.

En lugar de realizar ediciones en vivo en el servidor de producción, generalmente es mejor realizar las ediciones en alguna otra máquina, luego confirmarlas y

hg push

al servidor de producción.

La carpeta ".hg/" sigue creciendo, muy lentamente, porque sólo guarda archivos quecambiarde una confirmación a la siguiente, e incluso esos conjuntos de cambios relativamente pequeños se comprimen antes de almacenarse.

Probablemente exista una mejor manera de lidiar con este lento crecimiento, pero lo que hago actualmente es:

Después de "confirmar hg" la versión actual y luego "hg pull" en mi máquina de respaldo externa, una vez al año elimino la carpeta ".hg/" del servidor y uso "hg init" para crear una nueva, nueva y vacía Carpeta ".hg/", y luego confirmo la versión actual. (La última versión del repositorio de respaldo externo de 2014deberíaser idéntico a la primera versión del repositorio de respaldo externo de 2015).

información relacionada