Linux: ¿qué directorios debo excluir al hacer una copia de seguridad de un servidor?

37

Estoy haciendo una copia de seguridad de un servidor Linux y almacenándolo en otro servidor.

Comencé con un simple

rsync -aPh --del server.example.com:/ /mnt/backup

Entonces alguien señaló que no debería hacer una copia de seguridad /proc, ya que no desea restaurar el /procde un servidor en otro.

¿Hay algo más que debería / no debería incluir?

Por ejemplo, ¿qué pasa /sys?

Rory
fuente

Respuestas:

24

Esto realmente depende de cómo va a restaurar su sistema. Si va a reconstruir, entonces solo necesita los archivos de configuración / datos para sus servicios (por ejemplo: / etc, / opt, / var, / home)

Si está buscando una restauración completa del sistema, entonces podría omitir / proc, / boot & / dev. Luego puede instalar el sistema operativo mínimo desde su medio de arranque y luego restaurar su sistema a través de su copia de seguridad.

Por supuesto, la mejor copia de seguridad es aquella que ha sido probada y verificada .

Así que omita lo que no cree que necesita, intente restaurar en una VM y verifique que pueda recuperar su sistema utilizando estos datos.

Wayne
fuente
55
No lo omita por /bootcompleto; es posible que deba comparar la configuración de arranque anterior con la configuración de arranque nueva. Solo asegúrese de no restaurar, /boot excepto manualmente.
quack quijote
55
Y excluir / sys también ... Y para restaurar a metal desnudo, será mejor que excluya /etc/udev/rules.d/ también.
wazoox
2
también perdió + encontró que para el sistema de archivos, / mnt y / media no copiar ningún dispositivo montado
blade
29

Tanto /procy /sysson los sistemas de ficheros virtuales que reflejan el estado del sistema, y le permiten cambiar varios parámetros de ejecución (y, a veces haces cosas más peligrosas, como escribir directamente en la memoria o en un dispositivo). Nunca debe hacer una copia de seguridad o restaurarlos.

En la mayoría de las distribuciones modernas, /devse crea dinámicamente en el arranque (es un sistema de archivos de memoria lleno de udevamigos). No tiene sentido respaldarlo, e intentar restaurarlo es inútil. Sin embargo, si su distribución está configurada para usar una estática /dev, esto no aplica (verifique /proc/mounts, si/dev es un tmpfses un sistema de archivos de memoria).

Hay otros sistemas de archivos que no debe respaldar; usbfs(por lo general en /proc/bus/usb, si se monta en absoluto), debugfs(se supone que en el /sys/kernel/debugcaso de montaje en absoluto, pero algunas personas ponerlo en otro lugar; es probable que no tenga éste), devpts(montado en /dev/pts), otros tmpfscasos (a menudo se encuentran en /dev/shm, /var/run, /var/locky otros lugares; hacer una copia de seguridad de ellos y restaurarlos debe ser inofensivo pero inútil, ya que su contenido se pierde al apagarlo, y cualquier sistema de archivos remoto o directorios mágicos de montadores automáticos (intentar respaldarlos o restaurarlos podría terminar en un desastre, como podría ser terminar haciendo copias de seguridad / restaurando a una máquina diferente ). También debes tener cuidado con /mediay/mnt, ya que los dispositivos externos (como un CD que olvidó en la unidad) podrían encontrarse allí, pero también podría haberlos utilizado a propósito para montar algo que debería ser respaldado.

Tenga en cuenta que, aparte de su mayoría inofensivas tmpfscasos, los sistemas de archivos de red / automounters y medios extraíbles, los sistemas de archivos que no se debe salvaguardar son todos descendientes de /dev, /proco /sys. Si no tiene sistemas de archivos de red (o automounters), y no hay medios extraíbles, excluyendo /syse /procy reiniciar después de una restauración (para limpiar los tmpfscasos) debería ser suficiente.

CesarB
fuente
8

Algunos de los archivos especiales en / proc y / sys confunden rsync. Por lo general, tampoco desea realizar una copia de seguridad de los sistemas de archivos de red montados. Los archivos dispersos también pueden causar problemas.

Agregue -x para limitarlo a un sistema de archivos. Eso evita todos los sistemas de archivos de red y / proc, etc. Sin embargo, debe ejecutar un rsync para cada sistema de archivos que haya montado.

Agregue -S para manejar archivos dispersos con sensatez.

pjc50
fuente
4

/ boot, / dev y / proc son bastante inútiles para hacer copias de seguridad; sin embargo, si sabe lo que está haciendo, puede hacer una copia de seguridad / boot.

Tampoco haría copia de seguridad / lib, / media, / mnt, / sbin, / bin, / srv, / sys o / tmp.

/ usr es opcional, dependiendo de si tiene algo en / usr que valga la pena hacer una copia de seguridad. Si yo fuera usted, me preocuparía más hacer una copia de seguridad de $ HOMEs del usuario, / var y / etc (para archivos de configuración).

Sin embargo, de nuevo, todo esto realmente depende del tipo de copia de seguridad que desee hacer. ¿Es este un servidor web? ¿Es esta una computadora personal? ¿Es este un servidor shell con toneladas de directorios en / home?

Michael Pobega
fuente
Me gustaría restaurar mediante la clonación de la copia de seguridad en una nueva máquina
Rory
¿Qué quieres decir con "clonación"? Siempre puede hacer una copia de seguridad de las particiones sin formato utilizando dd y sfdisk sfdisk -d> division_table.part dd if = / dev / sda1 of = dev.sda1.img (haga esto para cada partición) y luego, en su nuevo sistema: sfdisk / dev / sda <division_table.part dd if = dev.sda1.img of = / dev / sda1 (para cada partición, nuevamente)
Michael Pobega
Como al sistema de comentarios no le gustan las etiquetas de código, publiqué otra respuesta.
Michael Pobega el
@MichaelPobega Si realiza una copia de seguridad de particiones sin procesar como dice, entonces tendría que copiar todo el tamaño del disco. ¿Por qué copiar 512 GB cuando ha usado solo 80 GB de su disco? Con rsyncusted no solo copie solo lo que ha usado, sino que también habilite la sincronización futura, para que pueda ejecutar de forma segura un trabajo cron para ello.
Max
Volviendo a esto años más tarde, mi década de experiencia me ha enseñado que eres correcto @Max.
Michael Pobega
3

Puede lograr una copia de seguridad total usando sfdisk y dd.


Para hacer una copia de seguridad del esquema de partición de cada disco duro, usaría sfdisk así:

sfdisk -d /dev/sda  > parttable_sda.part

Para hacer una copia de seguridad de cada partición, puede usar dd, así:

dd if=/dev/sda1 of=devsda1.img

Dónde /dev/sda1 está desmontado, como con un arranque de CD en vivo.

(tenga en cuenta que necesitará tener mucho espacio libre para escribir este archivo; por lo tanto, puede escribirlo en un medio externo) Haga eso para cada partición, una a la vez, y haga una copia de seguridad de todo.


Luego, para restaurar en otra computadora, puede hacer:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
Michael Pobega
fuente
3
ADVERTENCIA: solo haga esto si la partición está desmontada o montada de solo lectura. Volcar el contenido en bruto de una partición mientras se está escribiendo puede terminar con un sistema de archivos muy inconsistente en la copia de seguridad (porque los bloques cerca del comienzo del sistema de archivos se copian "antes" que los bloques cerca del final, y los algoritmos del sistema de archivos no espere esto; puede evitar este problema si de alguna manera puede hacer una instantánea atómica del sistema de archivos). fsck no lo ayudará, ya que sus algoritmos también dependen del orden en que el sistema de archivos escribe en el disco.
CesarB
dd es el camino a seguir. Arrancar en un LiveCD, por supuesto. Y es importante dd if=/dev/urandom of=/dev/sdb bs=512 count=12borrar la tabla de particiones y MBR de la unidad de destino.
SDsolar
2

En lugar de excluir, generalmente solo hago una copia de seguridad de lo que quiero. Incluyendo: /home /etc /var(excepto /var/log)

DennyHalim.com
fuente
1

Básicamente, los pseudo-sistemas de archivos (/ proc, / sys, / dev / shm ...) no necesitan copia de seguridad.

sendmoreinfo
fuente
1

Como lo señaló esta gran comunidad:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot es opcional ver otros comentarios)

Como referencia, mi comando rsync final (en Arch con medios externos montados en '/ run / media / fred / INTENSO /' y haciendo una copia de seguridad en una carpeta llamada 'fred') es:

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / Fred / INTENSO / Fred /.

(los archivos excluidos también se pueden especificar con llaves (--exclude = {/ dev, / proc}) en Bash o con un archivo de texto (--exclude-from = 'excude.txt')).

-P: muestra el progreso -a: modo de archivo -z: comprime durante la transferencia -h: números de salida en un formato legible por humanos -m: poda directorios vacíos -x: límite a un sistema de archivos -v: detallado

Fred Christophe
fuente
1

Estoy en una máquina Ubuntu 18.04 y tengo estos excluidos:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Además, específicamente para mi configuración, excluyo estos:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk
usuario2724383
fuente
0

Generalmente tengo la costumbre de hacer copias de seguridad de todo en un sistema, incluso las cosas que sé con certeza son inútiles para hacer copias de seguridad. Es más sencillo de configurar y puede estar 100% seguro de que obtendrá todo lo que necesita incluido en la copia de seguridad.

Maximus Minimus
fuente
1
sí, pero la pregunta de seguimiento es ¿qué elimina de su copia de seguridad como innecesaria?
Rory el
A lo que yo respondería: "nada".
Maximus Minimus
Cierto. Lo excluye del proceso de restauración, no de la copia de seguridad en sí. Pero probablemente todavía quiera dejar de lado /procy /devno confundir a los pobres rsync.
TJ Crowder
1
@mh, restaurarías / proc / kcore, ¿cuál es la memoria del servidor original? eso suena un poco tonto ...
Rory el
0

Estoy usando un Linux linux box como servidor de prueba para el desarrollo de sitios web y para alojar un wiki de documentación. Cada noche, un crontab descarga la base de datos MySQL en / var / www, y luego todo / var / www se comprime y se replica en el servidor de respaldo. No es ideal, pero es suficiente. Tuve que reconstruir el servidor en un momento, y todo lo que realmente extrañé fueron los archivos de configuración de Apache y Samba.

Nic
fuente
0

Supongo que no tienes Linux en una máquina virtual. Si es posible, instaría a considerar pasar a la virtualización. Las copias de seguridad en el nivel vm son un nivel completamente nuevo de consistencia y facilidad de uso. Existen herramientas de virtualización gratuitas, por lo que no necesariamente tiene que invertir en VmWare u otra herramienta monstruosa costosa.

Gnudiff
fuente
0

Pregunta: ¿Qué directorios debo excluir al hacer una copia de seguridad de un servidor?

Aquí hay un script que uso con frecuencia, desde una computadora portátil Ubuntu 16.04 LTS a un servidor Ubuntu 16.04 LTS. Muestra claramente qué directorios deben omitirse al hacer una copia de seguridad completa:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Tenga en cuenta la exclusión de /mnt, que es donde cada sistema Ubuntu tiene una unidad de copia de seguridad de tiempo completo montada para rsynccopias de seguridad basadas en cron 4 veces al día. Estas unidades están montadas por entradas enfstab y siempre están presentes. Incluirlos en una copia de seguridad de otro sistema sería duplicativo.

Del mismo modo, /mediaes donde se montan las unidades USB. Están respaldados por separado.

SDsolar
fuente