Wednesday, January 1, 2020

Respaldar la MicroSD con Raspbian buster 10 y el comando dd

#creamos el archivo de respaldo
sudo nano respaldo.sh

# podemos crear el archivo sin compromir
DAY=$(date +%A)
sudo dd if=/dev/mmcblk0 of=/home/pi/usb/Files/RPI4_backup-$DAY.img bs=4M status=progress

# podemos crear el archivo o asignando compresion con gzip
DAY=$(date +%A)
sudo dd if=/dev/mmcblk0 conv=sync,noerror bs=4M status=progress  | gzip -c  > /home/pi/usb/Files/RPI4_backup-$DAY.img.gz

#le cambiamos los permisos con chmod
chmod 777 respaldo.sh

#y si ahora quedemos calendarizar el proceso todos los dias a X hora podemos usar crontab
crontab -e

#en este caso el respaldo se ejecuta todos los dias a las 2 am
0 2 * * * /home/pi/./respaldo_rpi.sh

si deseamos truncar la unidad podemos obtener el tamaño maximo con fdisk -l

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      532480 15892479 15360000  7.3G 83 Linux

y aparecerá el tamaño del sector en mi caso 512 bytes.
Disk /dev/mmcblk0: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x027fc595

#para hacer el respaldo 
sudo dd if=/dev/mmcblk0 of=/usb/Files/RPI4_backup.img bs=4M status=progress

#ejemplo de como truncar 
#truncate --size=$[(valor_de_End + 1)*512] imagen.img
truncate --size=$[(15360000 + 1)*512] /usb/Files/RPI4_backup.img

respaldo en otra unidad 
#sudo dd if=/dev/mmcblk0 of=/usb/Files/RPI4_backup.img bs=4M status=progress
path1=/1tb_usb/Files/RPI4_backup.img #asignaNombre
sudo dd if=/dev/mmcblk0 of=$path1 bs=4M status=progress #generaRespaldoFull
sudo truncate --size=$[(15360000 + 1)*512] $path1 #truncaElRespaldo

mejora con pishrink
wget https://githubusercontent.com
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin/pishrink


#!/bin/bash

# Configuración de rutas
RESPALDO_DIR="/usb500GB/Files"
RESPALDO_NOM="RPI4_backup.img"
PATH_FINAL="$RESPALDO_DIR/$RESPALDO_NOM"

echo "==========================================="
echo " Iniciando respaldo completo de Raspberry Pi"
echo "==========================================="

# 1. Ejecutar dd para crear la imagen completa de 32GB
echo "[1/2] Copiando tarjeta SD a $PATH_FINAL..."
sudo dd if=/dev/mmcblk0 of="$PATH_FINAL" bs=4M status=progress conv=fsync

# Verificar si dd terminó correctamente
if [ $? -eq 0 ]; then
    echo -e "\n[OK] Copia base con dd finalizada con éxito."
    echo "==========================================="
    echo "[2/2] Iniciando optimización con PiShrink..."
    echo "==========================================="

    # 2. Ejecutar PiShrink sobre la imagen recién creada
    sudo pishrink "$PATH_FINAL"

    echo "==========================================="
    echo " ¡Proceso completado con éxito!"
    echo " Tu imagen optimizada está lista en: $PATH_FINAL"
    echo "==========================================="
else
    echo -e "\n[ERROR] El comando dd falló. Se cancela PiShrink."
    exit 1
fi

No comments:

Post a Comment