Queremos hacer una copia de seguridad de todo en nuestro servidor Debian, que se ejecuta de forma remota en el otro lado del mundo (alojado por Linode), sin apagarlo.
Este sistema ejecuta shell, correo electrónico, XMPP / prosody y web, con un par de configuraciones simples de nginx.
Queremos hacer una copia de seguridad de los archivos relacionados con esas cosas solo para estar seguros. Por ejemplo, los archivos que los usuarios han almacenado en sus directorios de inicio.
No necesitamos copiar exactamente la configuración existente wrt cada archivo / etc; en cambio, la razón por la que incluso estamos haciendo la copia de seguridad en primer lugar es para que podamos moverlo todo a una nueva configuración (la versión más nueva de Debian todavía está en Linode).
Veo que Linode ofrece un servicio de respaldo. Pero a largo plazo también necesitamos copias de seguridad propias, aquí, en caso de que desaparezcan o suceda algo extraño.
La razón por la que esta pregunta existe es que cuando intenté hacer copias de seguridad en el pasado, seguí cometiendo cualquiera de estos dos errores:
- Dije "OK, solo copiaré
/
y todo lo que está debajo" y luego me quedé atrapado en un extraño bucle infinito, ya sea porque la unidad a la que estaba copiando estaba montada en / media / backup y se copiaba recursivamente [obv ese problema específico no se aplica aquí ya que vamos a hacer una copia de seguridad a través de rsync o similar] o se ha quedado atascado tratando de copiar algunas cosas "vivas" en / proc o / var o lo que sea, como tratar de mantenerse al día con los registros siempre cambiantes, o - Dije "OK, solo tomaré el mínimo de lo que necesitamos ... hmm, los directorios de inicio de todos, y los directorios de nuestro servidor web (todo debajo
/var
) y vamos a enganchar una copia/etc
y todos los correos antiguos en / var / vmail "y luego invariablemente jodí los permisos de archivo o las marcas de tiempo (me aseguraré de no hacer una copia de seguridad de archivos Unix en una unidad FAT esta vez) u olvidé algo (" oh, dispara, tenía algunos scripts personalizados en / usr / local / bin que nunca almacené en ningún otro lugar, olvidé obtenerlos, supongo que ya no están ").
Por lo tanto, la copia obv de toda la unidad directamente hacia arriba ha llevado a dificultades y la copia selectiva de directorios ha llevado a dificultades. Quiero saber cómo hacerlo bien.
La pregunta de error del servidor ¿ Qué se necesita para un sistema de copia de seguridad completo? cubre filosofía y buenas prácticas, pero estoy buscando estos detalles más específicos de:
- ¿Qué directorios necesito copiar y cuáles excluyo?
- ¿Qué atributos de archivo, como marcas de tiempo, propietario y grupo, debo presentar y cómo lo hago? ← Creo que puedo responder esta mitad de la pregunta yo mismo con algo como ... um ...
rsync -HXaz
¿Creo que es una buena opción para nosotros? El-z
obv realmente no está relacionado con la pregunta que es "¿qué debo preservar?"
Muchos de los consejos de respaldo que veo, como el uso dd
, parecen presuponer que el disco está desmontado y no está en uso. Pero no estoy supone excluir "vivo" directorios como / proc y algunos de los subdirectorios bajo / var (Sin embargo, algunas de las cosas en / var Sé que definitivamente hacemos necesidad de mantener) y / montaje? ¿Qué más hay que pensar en esta situación? Entonces supongo que solo puedo gruñirlo con rsync y usar un montón de --exclude
banderas.
¿O hay mejores ideas, especialmente las amigables con FOSS?
cp -r -a
conservará tantos atributos de archivo como sea posible al copiar archivos (según lo que admita el sistema de archivos de destino). La -a
bandera indica cp
que se preserven los atributos. Para copiar a través de una red o mediante un sistema de archivos que no admite los atributos requeridos, tar -c
siempre me ha funcionado, aunque creo que hay algunos casos extremos que no cubre y, en particular, creo que tar
depende de forma predeterminada de los nombres de usuario que coinciden en ambos sistemas Dicho esto, he copiado un sistema Linux completo (sin montar) usando tar
sin ningún problema aparente.