Raspberry Pi – Creación de un backup de la µSD y redimensionado de las particiones de forma automática

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 ………..