Aquí hay una introducción al uso rsync
para realizar copias de seguridad en el Pi. Una vez que se crea el respaldo inicial, mantenerlo actualizado de esta manera es mucho más rápido que extraer constantemente toda la imagen. Puede hacer esto en un disco duro local o en una red.
En realidad, no desea una copia completa de un sistema en ejecución como respaldo, ya que algunas de las cosas aparentemente en el sistema de archivos solo existen en tiempo de ejecución. Incluir eso en una copia de seguridad y luego usarlo para recrear una imagen más tarde puede crear problemas para usted.
Hay algunas otras excepciones también. rsync
puede aceptar una lista de patrones ( glob ) para excluir, y esos se pueden leer desde un archivo, así que primero veamos qué debería estar en dicho archivo. Tenga en cuenta que las entradas son de la forma /directory/*
y no /directory
. Esto se debe a que queremos que existan, pero no queremos copiar nada en ellos.
/proc/*
/sys/*
Estos realmente no existen en el disco. Son una interfaz para el núcleo, que los crea y los mantiene en la memoria . Si copia estos y luego los copia de nuevo en un sistema y lo inicia, será (en el mejor de los casos) sin sentido, ya que el núcleo los usa como puntos de montaje para las interfaces [Si desea ver qué sucede cuando monta una partición del sistema de archivos en un directorio con datos, intente. Funciona y no hará ningún daño, pero las cosas que estaban en el directorio ahora son inaccesibles.]
Tenga en cuenta que es crítico que existan los puntos de montaje /sys
y /proc
. Pero no deberían contener nada. Próximo:
/dev/*
El dev
directorio no es exactamente lo mismo que proc
y sys
pero para nuestros propósitos se encuentra. Si cree que debe guardar esto para poder tener los mismos nodos de dispositivo en su copia de seguridad o algo así, está equivocado . No te molestes. No copie dev
. Hace mucho tiempo, Linux funcionaba de esa manera, pero ya no lo hace.
/boot/*
Este es un caso especial con la mayoría (quizás todas) de las distribuciones específicas de Pi, como Raspbian. En realidad, es un punto de montaje para la primera partición, vfat. Vamos a lidiar con eso por separado. Hagas lo que hagas, no te molestes en incluirlo aquí, porque de nuevo, es un punto de montaje.
/tmp/*
/run/*
/run
generalmente tampoco está en el disco, está en la memoria. Quizás también /tmp
podría serlo (esto ahorraría un poco de acción de la tarjeta SD), pero en cualquier caso, como los nombres implican, estos no son lugares para almacenar datos persistentes. Las aplicaciones que los usan esperan que se eliminen en cada arranque.
/mnt/*
/media/*
Esto es importante especialmente si planea realizar una copia de seguridad en un disco duro o una memoria USB y el dispositivo está en /mnt
o /media
(el montaje automático tiende a usar este último), porque si no excluye la ubicación de esos dispositivos en el sistema de archivos, lo hará cree un bucle que haga una copia de seguridad del contenido de la unidad, hasta que se quede sin espacio. Creo que rsync
podría ser lo suficientemente inteligente como para detectar algo tan tonto, pero trate de evitar probar la premisa.
En la copia de seguridad real: cree un directorio para hacer una copia de seguridad en el disco duro montado localmente, USB, etc., por ejemplo, "pi_backup". Alternativamente, puede hacer una copia de seguridad en una ubicación remota a través de ssh
(consulte a continuación) o utilizando un sistema de archivos montado en la red, pero esto probablemente tomará un tiempo la primera vez.
Si el archivo que contiene la lista para excluir es /rsync-exclude.txt
1 y su unidad es /mnt/usbhd
, para hacer la copia de seguridad real:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
Observe que hay una barra inclinada finalpi_backup/
.
Esto tomará un tiempo y producirá una gran cantidad de resultados (si desea examinar eso en un registro, agregue > rsync.log
). --delete
no tiene sentido la primera vez, pero para mantener la copia de seguridad actualizada úsela. Esto garantiza que las cosas que luego eliminó en el Pi también se eliminen de su copia de seguridad. La a
recursividad conjuntos en los directorios y se asegura de todos los atributos de archivo partido. -H
es preservar los enlaces duros 2 , v
es detallado , por lo que obtienes algo de salida (de lo contrario rsync
es silencioso). Mira man rsync
para más.
Hay un acceso directo mediante el cual puede omitir el --exclude-from
archivo. Si está seguro de que todas las cosas que no desea copiar ( /tmp
etc.) están en sistemas de archivos separados, puede usar:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
ha sido insertado. Esta es la forma abreviada de --one-file-system
, que le dice que rsync
no cruce los límites del sistema de archivos. Personalmente, prefiero el --exclude-from
, pero por ejemplo, Raspbian predeterminado, --one-file-system
funcionará bien. Puedes usar ambos si quieres tener mucho -x
cuidado: D
Eso no es una copia de seguridad completa. Es suficiente si no ha puesto nada boot
y está de acuerdo con usar la copia de seguridad para restaurar el sistema al pegar la tarjeta en una computadora y ejecutar:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
También puede hacer esto con una tarjeta con una nueva imagen (suponiendo que sea la misma que su imagen base), aunque eso es un poco ineficiente si tiene que crear la imagen (porque luego sobrescribirá la mayor parte). También puede conectar otra tarjeta SD a través de un adaptador USB con dicha imagen y utilizar el método anterior para mantener una tarjeta duplicada.
Si ha agregado cosas /boot
(por ejemplo, un núcleo personalizado), incluido /boot/config.txt
, también querrá respaldar eso (bastante simple, no hay mucho). Simplemente hágalo por separado, y cuando restaure, esas cosas irán en la primera partición.
Vea aquí si desea crear una imagen de estilo Raspbian en blanco en la que luego podría hacer una copia de seguridad. Puede usar una metodología similar para crear una tarjeta de estilo Raspbian vacía: en lugar de tratar con un .img
archivo, estaría tratando con un dispositivo real (por ejemplo /dev/sdb
), lo que significa que todo lo que tiene que hacer es crear la tabla de particiones fdisk
y luego formato /dev/sdb1
y sdb2
(o lo que sea) con mkfs
.
¡Pero copiar toda la imagen es más fácil! ¿Por qué molestarse con esto?
No es tan dificil; Restablecí a una tarjeta en blanco (formateada según el último enlace) en 10 minutos. Sí, solo usarlo dd
todo es más simple (si encuentra cosas como palabras confusas ...), PERO luego toma bastante tiempo cada vez que desea actualizar su copia de seguridad porque debe hacer el 100% de ella cada vez. Utilizando rsync
, una vez que existe una copia de seguridad, la actualización es mucho más rápida, por lo que puede configurarlo para que ocurra sin problemas todos los días a través de cron. Sobre una red incluso. Cada seis horas Cuanto más lo haga, menos tiempo le llevará.
rsync
vía ssh
Aquí hay un ejemplo:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"Opciones" sería, por ejemplo, -av --delete --exclude-from=/rsync-exclude.txt
y "opciones ssh" es lo que normalmente usa (si es que lo hace). Debe tener acceso root a través ssh
de hacer esto a los efectos de una copia de seguridad del sistema (fijado PermitRootLogin=yes
en /etc/ssh/sshd_config
y reiniciar el servidor).
1 Deberías conservar este archivo. Puede poner comentarios en las líneas que comienzan con #
o ;
. Esto podría incluir el rsync
comando real , que se puede copiar y pegar más tarde para que no tenga que recordarlo cada vez.
2 Gracias a Kris por señalar rsync
que no hace esto automáticamente.
dd
, investiguersync
.