En esta entrada crearemos una copia de la tarjeta SD programada semanalmente , la comprimiremos y reduciremos el tamaño de la partición al mínimo para poder grabarlo en tarjetas SD directamente , al arrancar con el backup lo primero que hará es ocupar todo el espacio libre y se reiniciara asignando todo el espacio libre a la partición principal
Primero instalaremos todos los paquetes necesarios
sudo apt-get update sudo apt-get install pigz
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh chmod +x pishrink.sh sudo mv pishrink.sh /usr/local/bin
Crearemos en el NAS la carpeta donde ira las copias de seguridad
sudo mkdir /mnt/copias
y añadiremos en el fichero /etc/fstab la ruta
sudo nano /etc/fstab Añadir 192.168.1.XXX/datos_vm/pi /mnt/copias/ cifs domain=192.168.1.XXX,username=YYYYYYYY,password=ZZZZZZ,rw,file_mode=0777,dir_mode=0777 0 Forzaremos el montar la carpeta con sudo mount -av
Estos serán los pasos del script de copia
- Creamos un par de variables para los nombres de los ficheros
- Guardaremos en un log el tiempo que lleva activa la Pi Zero 2 y la fecha/hora actual
- Desactivamos el modo de energía de la wifi
- Forzamos el montado de la carpeta del NAS
- Matamos un proceso de python que controla el led de estado
- Devolvemos el led de status a la función de actividad en la SD
- Eliminamos los ficheros anteriores a seis meses en el NAS
#Local FICHERO=image_`hostname`_`date +%d%m%y`.img FICHERO_COMPRIMIDO=image_`hostname`_`date +%d%m%y`_reducido.img # Un log, porque la vida sin logs no es nada RUTA_LOG="/home/antonio/scripts/log_copia_sd.txt" echo "#################################################################" >> $RUTA_LOG echo "INICIO DEL BACKUP DE LA TARJETA SD" >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `uptime` | sed -e 's/^[ \t]*//' >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `date +"%T"` "comenzando backup sd ..." >> $RUTA_LOG sudo iw wlan0 set power_save off sleep 1 sudo mount -av sudo killall python echo mmc0 >/sys/class/leds/led0/trigger #Borrado de los ficheros anteriores a seis meses sudo find /mnt/copias/* -mtime +180 -exec rm {} \; sleep 1
- Paramos los dockers , ante todo el detector de presencia bluetooth ya que interfiere con la wifi cuando esta haciendo el inquiry
- Ponemos a cero el espacio libre de la SD , asi las copias comprimidas ocuparan muchísimo menos.
echo `date +"%T"` "parada de los dockers ..." >> $RUTA_LOG sudo docker stop heimdall sudo docker stop ddns-updater sudo docker stop dozzle sudo docker stop uptime-kuma sudo docker stop ha-dockermon sudo docker stop hass_bluetooth sleep 1 echo `date +"%T"` "puesta a ceros del espacio libre ..." >> $RUTA_LOG sudo cat /dev/zero > zero.file sync sudo rm zero.file
- Hacemos una copia de todas las particiones con el comando dd al NAS , la opción bs es muy importante ya que afecta directamente al rendimiento , luego explico como determinar el mejor valor para dicha opción
- Redimensionamos el fichero con todo el contenido de la SD que antes hemos creado , las opciones elegidas son comprimir el resultado con gzip y usar todos los núcleos al comprimir
- Opcional : Comprimimos la imagen inicial creada con dd
- Opcional: Eliminamos los ficheros de origen de ambas copias , la completa y la redimensionada
- Arrancamos los dockers
- Reiniciamos
echo `date +"%T"` "copia de la imagen de la SD al NAS ..." >> $RUTA_LOG sudo nice -n -20 dd bs=4M if=/dev/mmcblk0 of=/mnt/copias/$FICHERO status=progress echo `date +"%T"` "reduccion y compresión de la imagen de la SD en al NAS ..." >> $RUTA_LOG sudo nice -n -20 pishrink.sh -vza /mnt/copias/$FICHERO /mnt/copias/$FICHERO_COMPRIMIDO #Comprimir con el backup completo echo `date +"%T"` "comprimir imagen creada por DD en el NAS ..." >> $RUTA_LOG sudo pigz -9 -k /mnt/copias/$FICHERO #sudo rm /mnt/copias/$FICHERO #sudo rm /mnt/copias/$FICHERO_COMPRIMIDO echo `date +"%T"` "arranque de los dockers ..." >> $RUTA_LOG sudo docker start mqtt_scanner sudo docker start heimdall sudo docker start ddns-updater sudo docker start duckdns sudo docker start dozzle sudo docker start uptime-kuma sudo docker start ha-dockermon sudo docker start hass_bluetooth echo `date +"%T"` "reinicio ..." >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `date +"%T"` "FIN DEL BACKUP" >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG sleep 1 sudo reboot
El script completo quedaría así
####################################################################################################### #!/bin/bash #Local FICHERO=image_`hostname`_`date +%d%m%y`.img FICHERO_COMPRIMIDO=image_`hostname`_`date +%d%m%y`_reducido.img # Un log, porque la vida sin logs no es nada RUTA_LOG="/home/antonio/scripts/log_copia_sd.txt" echo "#################################################################" >> $RUTA_LOG echo "INICIO DEL BACKUP DE LA TARJETA SD" >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `uptime` | sed -e 's/^[ \t]*//' >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `date +"%T"` "comenzando backup sd ..." >> $RUTA_LOG sudo iw wlan0 set power_save off sleep 1 sudo mount -av sudo killall python echo mmc0 >/sys/class/leds/led0/trigger #Borrado de los ficheros anteriores a seis meses sudo find /mnt/copias/* -mtime +180 -exec rm {} \; sleep 1 echo `date +"%T"` "parada de los dockers ..." >> $RUTA_LOG sudo docker stop heimdall sudo docker stop ddns-updater sudo docker stop dozzle sudo docker stop uptime-kuma sudo docker stop ha-dockermon sudo docker stop hass_bluetooth sleep 1 echo `date +"%T"` "puesta a ceros del espacio libre ..." >> $RUTA_LOG sudo cat /dev/zero > zero.file sync sudo rm zero.file echo `date +"%T"` "copia de la imagen de la SD al NAS ..." >> $RUTA_LOG sudo nice -n -20 dd bs=4M if=/dev/mmcblk0 of=/mnt/copias/$FICHERO status=progress echo `date +"%T"` "reduccion y compresión de la imagen de la SD en al NAS ..." >> $RUTA_LOG sudo nice -n -20 pishrink.sh -vza /mnt/copias/$FICHERO /mnt/copias/$FICHERO_COMPRIMIDO #Comprimir con el backup completo echo `date +"%T"` "comprimir imagen creada por DD en el NAS ..." >> $RUTA_LOG sudo pigz -9 -k /mnt/copias/$FICHERO #sudo rm /mnt/copias/$FICHERO #sudo rm /mnt/copias/$FICHERO_COMPRIMIDO echo `date +"%T"` "arranque de los dockers ..." >> $RUTA_LOG sudo docker start mqtt_scanner sudo docker start heimdall sudo docker start ddns-updater sudo docker start duckdns sudo docker start dozzle sudo docker start uptime-kuma sudo docker start ha-dockermon sudo docker start hass_bluetooth echo `date +"%T"` "reinicio ..." >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `date +"%T"` "FIN DEL BACKUP" >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG sleep 1 sudo reboot #######################################################################################################
Añadiremos una tarea en Cron con crontab -e , en este caso cada lunes a las siete de la mañana
0 7 * * MON /bin/sh /home/antonio/scripts/scopia_sd.sh
Ajuste del parámetro bs del comando dd
Después de varias pruebas el rendimiento de dd era bastante bajo , por lo que pasamos a optimizar el parámetro bs o block size con diferentes tamaños , a continuación veremos lo mucho que influye el elegirlo adecuadamente
https://github.com/tdg5/blog/blob/master/_includes/scripts/dd_obs_test.sh
Después de pasarle varias veces el test , los resultados son :
sh dd_bs_test.sh block size : transfer rate 512 : 3 MB/s 1024 : 0 MB/s 2048 : 4 MB/s 4096 : 8 MB/s 8192 : 8 MB/s 16384 : 5 MB/s 32768 : 6 MB/s 65536 : 1 MB/s 131072 : 3 MB/s 262144 : 4 MB/s 524288 : 5 MB/s 1048576 : 3 MB/s 2097152 : 7 MB/s 4194304 : 6 MB/s 8388608 : 4 MB/s 16777216 : 7 MB/s 33554432 : 0 MB/s 67108864 : 2 MB/s sh dd_bs_test.sh block size : transfer rate 512 : 3 MB/s 1024 : 6 MB/s 2048 : 8 MB/s 4096 : 6 MB/s 8192 : 7 MB/s 16384 : 6 MB/s 32768 : 4 MB/s 65536 : 9 MB/s 131072 : 7 MB/s 262144 : 3 MB/s 524288 : 5 MB/s 1048576 : 1 MB/s 2097152 : 5 MB/s 4194304 : 7 MB/s 8388608 : 0 MB/s 16777216 : 4 MB/s 33554432 : 3 MB/s 67108864 : 8 MB/s sudo sh dd_bs_test.sh block size : transfer rate 512 : 4 MB/s 1024 : 5 MB/s 2048 : 7 MB/s 4096 : 7 MB/s 8192 : 4 MB/s 16384 : 4 MB/s 32768 : 8 MB/s 65536 : 7 MB/s 131072 : 0 MB/s 262144 : 1 MB/s 524288 : 0 MB/s 1048576 : 6 MB/s 2097152 : 5 MB/s 4194304 : 0 MB/s 8388608 : 5 MB/s 16777216 : 2 MB/s 33554432 : 6 MB/s 67108864 : 4 MB/s sudo sh dd_bs_test.sh block size : transfer rate 512 : 1 MB/s 1024 : 7 MB/s 2048 : 8 MB/s 4096 : 9 MB/s 8192 : 0 MB/s 16384 : 8 MB/s 32768 : 3 MB/s 65536 : 6 MB/s 131072 : 1 MB/s 262144 : 0 MB/s 524288 : 0 MB/s 1048576 : 6 MB/s 2097152 : 4 MB/s 4194304 : 4 MB/s 8388608 : 0 MB/s 16777216 : 1 MB/s 33554432 : 5 MB/s 67108864 : 4 MB/s
El tamaño mejor es el de 4194304 que es el mas estable en todos los test , lo por que pondremos ese tamaño en el script
sudo nice -n -20 dd bs=4194304 if=/dev/mmcblk0 of=/mnt/copias/$FICHERO.img status=progress
Una vez optimizado el bs empezaremos las pruebas con diferentes configuraciones de tamaño de SD , por ethernet o por wifi , con fuente alimentación externa o conectado a un usb directamente , y por ultimo con dockers activos e inactivos hasta conseguir la configuración optima ya que es un proceso que tarda varias horas.
El primer ajuste que nos encontramos es que aparecen excesivos “TX excessive retries” al estar alimentado por un usb en este caso un usb del router de la operadora , tras tres horas solo había subido 2,90Gb de la imagen creada por dd en el primer paso
Conectada la alimentación a un alimentador externo de 2,5 Amp , tras tres horas había subido 15,6Gb de la imagen creada por dd en el primer paso , mas de cinco veces que el anterior caso y con 2,5 veces menos “TX excessive retries”
Por lo que queda claro que deberá funcionar si o si con alimentador externo
Ethernet , tarjeta 32GB y fuente de alimentación externa
Deshabilitaremos el adaptador wlan con sudo rfkill block wifi para que todo el trafico sea a traves de un adaptador ethernet de 1Gb usb
La velocidad de subida de los datos y de la copia de la partición es de unos 23MB/s
Habilitaremos el adaptador wlan con sudo rfkill unblock wifi
Puesta a cero del espacio libre ==> 24 minutos
################################################################# 12:35:06 puesta a ceros del espacio libre ... 12:59:59 copia de la imagen de la SD al NAS ... #################################################################
Proceso sin puesta a cero del espacio libre ==> 1 Hora y 55 minutos
Total 2 horas y 19 minutos , teniendo en cuenta que la velocidad por wifi en la pi zero 2w baja a 2MB/s ( unas doce veces menos que por ethernet) la prueba por wifi queda descartada ya que podría durar casi 24 horas , algo inviable
################################################################# INICIO DEL BACKUP DE LA TARJETA SD ################################################################# 13:10:01 up 2:11, 2 users, load average: 0,06, 1,03, 3,12 ################################################################# 13:10:01 comenzando backup sd ... 13:10:04 parada de los dockers ... 13:10:08 puesta a ceros del espacio libre ... 13:10:08 copia de la imagen de la SD al NAS ... 13:33:37 reduccion y compresión de la imagen de la SD en al NAS ... 14:27:17 comprimir imagen creada por DD en el NAS ... 15:05:12 arranque de los dockers ... 15:05:44 reinicio ... ################################################################# 15:05:44 FIN DEL BACKUP #################################################################
Estos son los ficheros que ha generado , 32GB de la tarjeta , 9,54GB del espacio usado en la tarjeta una vez redimensionadas las particiones y 2,4GB en ambos ficheros comprimidos
Ethernet , tarjeta 16GB y fuente de alimentación externa dockers parados
Usamos la imagen redimensionada anterior para grabarla en un SD en este caso con win32imager , y la grabamos en una tarjeta de 16GB ya que realmente solo estamos usando 9,5GB y nos quedara espacio de sobras , al arrancar hace la expansión de la partición con todo el espacio , al ejecutar el comando df -h obtenemos este resultado , donde vemos que /dev/root ha crecido hasta ocupar la totalidad del espacio de la nueva SD
S.ficheros Tamaño Usados Disp Uso% Montado en /dev/root 15G 8,1G 5,8G 59% / devtmpfs 182M 0 182M 0% /dev tmpfs 214M 0 214M 0% /dev/shm tmpfs 214M 7,1M 207M 4% /run tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 214M 0 214M 0% /sys/fs/cgroup /dev/mmcblk0p1 253M 58M 196M 23% /boot overlay 15G 8,1G 5,8G 59% /var/lib/docker/overlay2/0c4869e98b5378852d89bd8aad9171373107ac32e342d165b98dbee79be0082b/merged overlay 15G 8,1G 5,8G 59% /var/lib/docker/overlay2/3fc3171a9d5ee7ad5251abe2bb03d6bbadf0bc17344fd17eee3685d72bc0545c/merged shm 64M 0 64M 0% /var/lib/docker/containers/6d79601d12ef20873af3b85bea86d559ea5154e1a50b9720fdba7161ae3566a3/mounts/shm shm 64M 0 64M 0% /var/lib/docker/containers/75ab080b4aa39f040dd0b3d7ea87c0c5f68cfbe4d71f3ed5f423877c8efdc253/mounts/shm overlay 15G 8,1G 5,8G 59% /var/lib/docker/overlay2/a1481586481a2c1e0ce784fce72a733823789f2780a45bd6c41340f6135659dd/merged shm 64M 0 64M 0% /var/lib/docker/containers/f57086bfe6abe9ebdf5ce58a0a9257c8394673c8342e8d060c9b31b2ae4dab02/mounts/shm //192.168.1.145/datos_vm/pi 14T 12T 2,1T 86% /mnt/copias tmpfs 43M 0 43M 0% /run/user/1001
Estos son los tiempos obtenidos esta vez con 16GB y ethernet
################################################################# INICIO DEL BACKUP DE LA TARJETA SD ################################################################# 20:24:18 up 4 min, 1 user, load average: 0,60, 0,76, 0,37 ################################################################# 20:24:18 comenzando backup sd ... 20:24:20 parada de los dockers ... 20:24:53 puesta a ceros del espacio libre ... 20:33:12 copia de la imagen de la SD al NAS ... 20:45:00 reduccion y compresión de la imagen de la SD en al NAS ... 21:24:40 comprimir imagen creada por DD en el NAS ... 21:55:14 arranque de los dockers ... 21:55:48 reinicio ... ################################################################# 21:55:48 FIN DEL BACKUP #################################################################
Total 1 hora y 31 minutos , de los cuales ocho minutos para borrar el espacio libre , 12 minutos para realizar el dd , 39 para recudir y comprimir la imagen y 31 para comprimir la imagen inicial , a una velocidad de 25MB/s de subida y unos 23MB/s de proceso en el dd
Ethernet , tarjeta 16GB y fuente de alimentación externa dockers en marcha
Ahora realizamos la misma prueba que antes , pero esta vez con los dockers en marcha para ver cuanto afecta al rendimiento global del proceso
################################################################# INICIO DEL BACKUP DE LA TARJETA SD ################################################################# 22:04:37 up 8 min, 1 user, load average: 0,15, 0,41, 0,34 ################################################################# 22:04:37 comenzando backup sd ... 22:04:40 puesta a ceros del espacio libre ... 22:13:14 copia de la imagen de la SD al NAS ... 22:26:38 reduccion y compresión de la imagen de la SD en al NAS ... 23:08:07 comprimir imagen creada por DD en el NAS ... 23:40:00 arranque de los dockers ... 23:40:04 reinicio ... ################################################################# 23:40:04 FIN DEL BACKUP #################################################################
Total 1 hora y 35 minutos , cuatro minutos mas que en el caso anterior , por lo que vemos que el estar funcionando los dockers no afecta en exceso al tiempo total y al estar por ethernet no aparecen los “TX excessive retries“
Al crear la imagen con dd ha bajado de 22,6 a 19,4 MB/s
WIFI , tarjeta 16GB y fuente de alimentación externa dockers parados
################################################################# INICIO DEL BACKUP DE LA TARJETA SD ################################################################# 11:50:01 up 4 min, 1 user, load average: 0,24, 0,55, 0,29 ################################################################# 11:50:01 comenzando backup sd ... 11:50:06 parada de los dockers ... 11:50:39 puesta a ceros del espacio libre ... 11:58:55 copia de la imagen de la SD al NAS ... 14:28:39 reduccion y compresión de la imagen de la SD en al NAS ... 20:14:52 comprimir imagen creada por DD en el NAS ... 22:40:52 arranque de los dockers ... 22:41:23 reinicio ... ################################################################# 22:41:23 FIN DEL BACKUP ################################################################
WIFI , tarjeta 16GB y fuente de alimentación externa dockers activos
IMPOSIBLE , MAS DE 16 HORAS
WIFI , tarjeta 16GB y fuente de alimentación externa dockers parados y Webdav
Webdav generaba un fichero temporal en la propia uSD con un tamaño considerable por lo que tuve que descartar esta opcion
WIFI , tarjeta 16GB y fuente de alimentación externa dockers parados sin compresión imagen dd
18:44:45 copia de la imagen de la SD al NAS ... ################################################################# INICIO DEL BACKUP DE LA TARJETA SD 16 , WIFI DOCKERS PARADOS Y SIN COMPRESION ULTIMA ################################################################# 05:15:01 up 14 min, 0 users, load average: 0,65, 0,57, 0,52 ################################################################# 05:15:01 comenzando backup sd ... 05:15:35 puesta a ceros del espacio libre ... 05:23:32 copia de la imagen de la SD al NAS ... 07:31:01 reduccion y compresión de la imagen de la SD en al NAS ... 13:45:18 arranque de los dockers ... 13:45:54 reinicio ... ################################################################# 13:45:54 FIN DEL BACKUP #################################################################
Casi 19 horas en total
WIFI , tarjeta 16GB y fuente de alimentación externa dockers activos sin compresión imagen dd
Imposible , a los 6GB da un error de kernel y el proceso se para
Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.735473] Internal error: Oops - BUG: 0 [#1] SMP ARM Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.796879] Process kworker/u8:1 (pid: 8772, stack limit = 0xa8c20f13) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.799708] Stack: (0x81727c00 to 0x81728000) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.802449] 7c00: fffffdfe 00000400 81727cc4 81727c18 7f31e024 802ac1fc 00000400 969fe000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.807866] 7c20: 00001000 00000000 7f2ff3ac 00000000 fffffdfe 00000000 0018ccdf 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.813256] 7c40: 00000971 7f30265c 80f05008 0018d0df 00000001 00000000 81727d60 80e00d10 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.818647] 7c60: 8d0de000 00000001 9460dc00 866ffa80 80e00e20 ffffff98 00000000 ffffffff Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.824201] 7c80: 0018d0df 00000000 00400000 00000040 0000000a a27fa1b6 81727d04 80e00e20 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.829030] 7ca0: 81727d60 00000400 80f05008 802b72f0 ffffe000 80f05008 81727d04 81727cc8 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.832694] 7cc0: 802ba628 7f31d498 ffffffff 81727d1c 00000000 a27fa1b6 81727dd4 a27fa1b6 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.836501] 7ce0: 9460d040 80e00d10 81727d60 00000400 80f03d00 80e00e20 81727d34 81727d08 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.840503] 7d00: 8036ef74 802ba5e0 8036e554 8036fa14 80e00dc0 9460d040 81727ea4 80f03d00 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.844605] 7d20: 80e00d10 ffffe000 81727dd4 81727d38 8036f8d4 8036ef3c 00000400 80e00d80 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.848781] 7d40: 80f05058 81033b84 00087896 fffffc00 810c1c10 00000000 9460f400 9460d054 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.853001] 7d60: 00000400 00000000 00000000 00000000 ffffffff 7fffffff 00000000 00000012 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.857220] 7d80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.861442] 7da0: 000015a9 a27fa1b6 81727da4 9460f400 9460d040 00000000 81727ea4 9460d054 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.865659] 7dc0: 80f03d00 80e00dc0 81727e0c 81727dd8 8036fc3c 8036f6cc 8036b480 000878a0 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.869878] 7de0: 00000000 9460d040 81727ea4 00000400 81438300 81033b84 80f05058 ffffe000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.874101] 7e00: 81727e74 81727e10 8036ff74 8036fbd8 80f05008 7fffffff 80f835ec 9460d11c Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.878318] 7e20: 9460d06c 80f03d00 00087896 000161cd 81727e30 81727e30 81727e38 81727e38 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.882539] 7e40: 00000000 a27fa1b6 00000000 000012ea 9460d124 00000000 81438300 9460d040 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.886759] 7e60: 9460d118 81033b84 81727ef4 81727e78 803712d4 8036fc94 80f05008 80f835e8 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.890978] 7e80: 80f05058 ffffe000 9460d11c 9460d044 8010cb68 8010bc00 8010bc24 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.895196] 7ea0: 8013bee4 7fe6f023 00000000 00000000 0000000c 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.899414] 7ec0: 00000000 a27fa1b6 8022a7dc 9460d124 866f8b80 81428400 81438300 00000100 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.903630] 7ee0: 00000000 00000000 81727f34 81727ef8 8013bb34 80370f2c 8022aa98 8010cb18 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.907851] 7f00: 81428400 81428400 81428400 866f8b80 866f8b94 81428400 00000088 81428418 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.912069] 7f20: 80f03d00 81428400 81727f74 81727f38 8013bee4 8013b8f0 80a034b4 80cfb888 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.916288] 7f40: 8103182e ffffe000 81727f74 84e87780 95461700 00000000 81726000 8013be84 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.920511] 7f60: 866f8b80 84fabe74 81727fac 81727f78 801439c4 8013be90 84e877a4 84e877a4 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.924736] 7f80: ffffe000 95461700 80143854 00000000 00000000 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.928961] 7fa0: 00000000 81727fb0 801000ec 80143860 00000000 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.933186] 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.937410] 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.941630] Backtrace: Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.943841] [<802ac1f0>] (end_page_writeback) from [<7f31e024>] (cifs_writepages+0xb98/0xdb8 [cifs]) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.947937] r5:00000400 r4:fffffdfe Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.950082] [<7f31d48c>] (cifs_writepages [cifs]) from [<802ba628>] (do_writepages+0x54/0xf0) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.954057] r10:80f05008 r9:ffffe000 r8:802b72f0 r7:80f05008 r6:00000400 r5:81727d60 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.958020] r4:80e00e20 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.959927] [<802ba5d4>] (do_writepages) from [<8036ef74>] (__writeback_single_inode+0x44/0x468) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.963765] r8:80e00e20 r7:80f03d00 r6:00000400 r5:81727d60 r4:80e00d10 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.965723] [<8036ef30>] (__writeback_single_inode) from [<8036f8d4>] (writeback_sb_inodes+0x214/0x50c) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.969538] r9:ffffe000 r8:80e00d10 r7:80f03d00 r6:81727ea4 r5:9460d040 r4:80e00dc0 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.973334] [<8036f6c0>] (writeback_sb_inodes) from [<8036fc3c>] (__writeback_inodes_wb+0x70/0xbc) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.977156] r10:80e00dc0 r9:80f03d00 r8:9460d054 r7:81727ea4 r6:00000000 r5:9460d040 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.980960] r4:9460f400 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.982853] [<8036fbcc>] (__writeback_inodes_wb) from [<8036ff74>] (wb_writeback+0x2ec/0x394) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.986674] r10:ffffe000 r9:80f05058 r8:81033b84 r7:81438300 r6:00000400 r5:81727ea4 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.990593] r4:9460d040 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.992482] [<8036fc88>] (wb_writeback) from [<803712d4>] (wb_workfn+0x3b4/0x574) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5865.996256] r10:81033b84 r9:9460d118 r8:9460d040 r7:81438300 r6:00000000 r5:9460d124 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.000184] r4:000012ea Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.002084] [<80370f20>] (wb_workfn) from [<8013bb34>] (process_one_work+0x250/0x5a0) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.005896] r10:00000000 r9:00000000 r8:00000100 r7:81438300 r6:81428400 r5:866f8b80 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.009740] r4:9460d124 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.011574] [<8013b8e4>] (process_one_work) from [<8013bee4>] (worker_thread+0x60/0x5c4) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.015235] r10:81428400 r9:80f03d00 r8:81428418 r7:00000088 r6:81428400 r5:866f8b94 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.018877] r4:866f8b80 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.020689] [<8013be84>] (worker_thread) from [<801439c4>] (kthread+0x170/0x174) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.024333] r10:84fabe74 r9:866f8b80 r8:8013be84 r7:81726000 r6:00000000 r5:95461700 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.027975] r4:84e87780 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.029787] [<80143854>] (kthread) from [<801000ec>] (ret_from_fork+0x14/0x28) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.031663] Exception stack(0x81727fb0 to 0x81727ff8) Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.033497] 7fa0: 00000000 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.037056] 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.040719] 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.042590] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:80143854 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.046141] r4:95461700 Message from syslogd@pi2w1 at Mar 23 15:24:00 ... kernel:[ 5866.047904] Code: 189da830 e1a00004 eb0043ad e89da830 (e7f001f2)
WIFI , tarjeta 16GB con alimentación USB , dockers parados sin compresión imagen dd
Primera prueba
################################################################# INICIO DEL BACKUP DE LA TARJETA SD ################################################################# 05:15:01 up 10 min, 0 users, load average: 0,28, 0,59, 0,54 ################################################################# 05:15:01 comenzando backup sd ... 05:15:04 parada de los dockers ... 05:15:34 puesta a ceros del espacio libre ... 05:23:30 copia de la imagen de la SD al NAS ... 07:17:48 reduccion y compresión de la imagen de la SD en al NAS ... 14:24:37 arranque de los dockers ... 14:25:07 reinicio ... ################################################################# 14:25:07 FIN DEL BACKUP #################################################################
Segunda prueba , parada de los dockers tras la copia de la imagen de la SD
################################################################# INICIO DEL BACKUP DE LA TARJETA SD ################################################################# 05:15:02 up 14 min, 0 users, load average: 0,47, 0,42, 0,42 ################################################################# 05:15:02 comenzando backup sd ... 05:15:04 puesta a ceros del espacio libre ... 05:23:35 copia de la imagen de la SD al NAS ... 07:25:03 parada de los dockers ... 07:25:35 reduccion y compresión de la imagen de la SD en al NAS ... 14:14:22 arranque de los dockers ... 14:14:54 reinicio ... ################################################################# 14:14:54 FIN DEL BACKUP #################################################################
Uno nueve horas y diez minutos y el otro casi nueve horas
Al final después de muchas pruebas y ajustes este es el aspecto del script final que hace una copia completa de la uSD , la comprime y genera otra copia con las particiones redimensionadas
Script final
#######################################################################################################################$ #!/bin/bash #Local FICHERO=image_`hostname`_`date +%d%m%y`.img FICHERO_COMPRIMIDO=image_`hostname`_`date +%d%m%y`_reducido.img # Un log, porque la vida sin logs no es nada RUTA_LOG="/home/antonio/scripts/log_copia_sd.txt" echo "#################################################################" >> $RUTA_LOG echo "INICIO DEL BACKUP DE LA TARJETA SD" >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `uptime` | sed -e 's/^[ \t]*//' >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `date +"%T"` "comenzando backup sd ..." >> $RUTA_LOG sudo iw wlan0 set power_save off sleep 1 sudo mount -av sudo killall python3 echo mmc0 >/sys/class/leds/led0/trigger sleep 1 #Borrado de los ficheros anteriores a seis meses sudo find /mnt/copias/* -mtime +180 -exec rm {} \; echo `date +"%T"` "puesta a ceros del espacio libre ..." >> $RUTA_LOG sudo cat /dev/zero > zero.file sync sudo rm zero.file echo `date +"%T"` "copia de la imagen de la SD al NAS ..." >> $RUTA_LOG sudo nice -n -20 dd bs=4M if=/dev/mmcblk0 of=/mnt/copias/$FICHERO status=progress echo `date +"%T"` "parada de los dockers ..." >> $RUTA_LOG sudo docker stop heimdall sudo docker stop ddns-updater sudo docker stop dozzle sudo docker stop uptime-kuma sudo docker stop ha-dockermon sudo docker stop hass_bluetooth sleep 1 echo `date +"%T"` "reduccion y compresión de la imagen de la SD en al NAS ..." >> $RUTA_LOG sudo nice -n -20 pishrink.sh -vza /mnt/copias/$FICHERO /mnt/copias/$FICHERO_COMPRIMIDO #Comprimir con el backup completo #echo `date +"%T"` "comprimir imagen creada por DD en el NAS ..." >> $RUTA_LOG #sudo pigz -9 -k /mnt/copias/$FICHERO #Borrar ficheros sudo rm /mnt/copias/$FICHERO echo `date +"%T"` "arranque de los dockers ..." >> $RUTA_LOG sudo docker start mqtt_scanner sudo docker start heimdall sudo docker start ddns-updater sudo docker start duckdns sudo docker start dozzle sudo docker start uptime-kuma sudo docker start ha-dockermon sudo docker start hass_bluetooth echo `date +"%T"` "reinicio ..." >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG echo `date +"%T"` "FIN DEL BACKUP" >> $RUTA_LOG echo "#################################################################" >> $RUTA_LOG sleep 1 sudo reboot #######################################################################################################################$
Yo lo añadí a una tarea semanal con CRON y tan ricamente esta funcionado ….
Y esto es todo ………..