Imagen de copia de seguridad de Raspberry Pi y grabación por lotes

Imagen de copia de seguridad de Raspberry Pi 4B + y grabación por lotes

Original: https://www.cooooder.com/archives/20200114

Antes de escribir este artículo, encontré algunos scripts de código abierto por mí mismo, pero puede deberse a que los parámetros reales son inconsistentes con la configuración del script, lo que provocó que no se ejecutaran, así que ajusté los comandos paso a paso y resolví el siguientes pasos. Si también se encuentra conmigo para el mismo problema, espero que siga los pasos a continuación paso a paso, y se explicarán y marcarán algunos comandos complicados en consecuencia. Creo que también puede implementar con éxito la duplicación de copia de seguridad de la tarjeta SD.

0. Preparación

alrededores
  • Frambuesa Pi 4B +
  • Tarjeta SD Raspberry Pi (instalada con el sistema Buster Raspbian)
  • Lector de tarjetas SD
  • Entorno de PC Ubuntu
  • Máquina virtual VMware (instale el sistema operativo de escritorio Ubuntu)
Listo
  1. Omita la instalación de VMware, proceso de instalación de Ubuntu
  2. Inserte la tarjeta SD en el lector de tarjetas, inserte la interfaz USB de la computadora
  3. Monte la tarjeta SD, la máquina virtual general reconocerá y montará automáticamente
  4. Si la tarjeta SD no se monta automáticamente, puede montarla manualmente, seleccione Máquina virtual> Dispositivo extraíble> Conectar
  5. Después de montar con éxito, puede ver dos carpetas
    ubuntu
Recursos

Todo está listo, inicia la copia de seguridad.

1. Instale las herramientas necesarias

parted es una herramienta para particionar el disco duro o cambiar el tamaño de la partición

sudo apt-get install -y dosfstools dump parted kpartx

2. Crea un directorio de trabajo

mkdir ~/backupimg
cd ~/backupimg

3. Uid y gid se determinan de acuerdo con el nombre de usuario actual del sistema.

uid=edward
gid=edward

4. Determine el tamaño de la imagen IMG creada.

Calcule el tamaño de la imagen aquí (1.2G + 53M). Por razones de seguridad, cree un archivo IMG de imagen en blanco de 1.5G (1600M)

# 查看SD卡已用空间大小,从而确定待备份的镜像IMG大小
df -h
# Filesystem   Size    Used   Avail   Use%   Mounted on
# /dev/sdb1    253M    53M    200M    21%    /media/edward/boot
# /dev/sdb2    15G     1.2G   13G     9%     /media/edward/rootfs

5. Crea una imagen IMG en blanco

# 大小1600M
sudo dd if=/dev/zero of=raspberrypi.img bs=1M count=1600

6. Verifique el tamaño de la imagen

Confirme el tamaño del archivo de imagen, debe ser un múltiplo entero de 512byte, de lo contrario debería ser un error en la operación del paso 5.

ls -l raspberrypi.img
# -rw-r--r-- 1 root root 1677721600 Jan 13 19:29 raspberrypi.img
# 1677721600 = 1024 * 1024 * 1600

7. Ver la tabla de particiones

El archivo de imagen debe particionarse como bootfs y rootfs (bootfs es de tipo FAT32 y rootfs es de tipo ext4)

# 执行sudo fdisk -l ,查看分区表,确定bootfs扇区的起始,获取三个后面需要用到的参数值:8192,532479,532480
sudo fdisk -l
# Device      Start       End     Sectors    Size   Type
# /dev/sdb1    8192    532479      524288    256M   W95 FAT32(LBA)
# /dev/sdb2  532480  31116287    30583808   14.6G   Linux

Inserte la descripción de la imagen aquí

8. Espejo de partición de archivos

# mklabel msdos:定义分区表格式,msdos不支持2TB以上容量的磁盘,大于2TB的磁盘选gpt分区表格式
# mkpart primary start end:primary指分区类型为主分区
# 这里的值需要手动执行步骤7,来设定
sudo parted raspberrypi.img --script -- mklabel msdos
sudo parted raspberrypi.img --script -- mkpart primary fat32 8192s 532479s
sudo parted raspberrypi.img --script -- mkpart primary ext4 532480s -1

9. Verifique si la partición es exitosa

sudo parted raspberrypi.img

# 在(parted)后面输入print free

# Number  Start   End     Size    Type     File system  Flags
#        16.4kB  4194kB  4178kB           Free Space
# 1      4194kB  273MB   268MB   primary               lba
# 2      273MB   1677MB  1404MB  primary
#        1677MB  1678MB  1049kB           Free Space

# 输入quit退出

10. Refleje el archivo IMG y asocie el dispositivo de bucle

Para montar el archivo de imagen en el sistema, debe utilizar el dispositivo de bucle para montar el archivo en el sistema.

sudo losetup -f --show raspberrypi.img
# 注意这里的输出 /dev/loop6

# 这里包括后面的loop6根据上一步命令获取,实际使用要根据实际获取的值进行替换
sudo kpartx -va /dev/loop6
# 查询挂载位置
ls /dev/mapper/loop6p*
# /dev/mapper/loop6p1  /dev/mapper/loop6p2
# loop6p1对应的是img文件分区上的 /boot,loop6p2对应的是 /root

11. Formato de IMG espejo

sudo mkfs.vfat -n boot /dev/mapper/loop6p1
sudo mkfs.ext4 -L rootfs /dev/mapper/loop6p2

img

12. Monte el dispositivo de bucle en el sistema.

mkdir tgt_boot tgt_Root
sudo mount -t vfat -o uid=${uid},gid=${gid},umask=0000 /dev/mapper/loop6p1 ./tgt_boot/
sudo mount -t ext4 /dev/mapper/loop6p2 ./tgt_Root/

13. Copia de seguridad: arranque de copia de seguridad

sudo cp -rfp /media/${uid}/boot/* ./tgt_boot/

14. Copia de seguridad: raíz de copia de seguridad

# 设置权限,并把文件夹清空
sudo chmod 777 tgt_Root
sudo chown ${uid}.${uid} tgt_Root
sudo rm -rf ./tgt_Root/*
cd tgt_Root/
sudo dump -0uaf - /media/${uid}/rootfs/ | sudo restore -rf -
# 注意!注意!
cd ../

vertedero

15. Ver PARTUUID

# Raspbian启动要对应分区的PARTUUID
# 镜像文件对应的loop device的两个分区的PARTUUID
sudo blkid
# /dev/mapper/loop6p1: SEC_TYPE="msdos" LABEL_FATBOOT="boot" LABEL="boot" UUID="ED9A-5B01" TYPE="vfat" PARTUUID="816d8bf0-01"
# /dev/mapper/loop6p2: LABEL="rootfs" UUID="88f021e9-d2bc-4a0b-b8f2-778d8adbc76a" TYPE="ext4" PARTUUID="816d8bf0-02"
# boot对应816d8bf0-01,root对应816d8bf0-02
# 被替换的PARTUUID
opartuuidb=`sudo blkid -o export /dev/sdb1 | grep PARTUUID`
opartuuidr=`sudo blkid -o export /dev/sdb2 | grep PARTUUID`
# 用于替换的PARTUUID
npartuuidb=`sudo blkid -o export /dev/mapper/loop6p1 | grep PARTUUID`
npartuuidr=`sudo blkid -o export /dev/mapper/loop6p2 | grep PARTUUID`

16. Modify./tgt_boot/cmdline.txt

# 用 $npartuuidr 替换 $opartuuidr => PARTUUID=816d8bf0-02 替换 PARTUUID=738a4d67-02 
sudo sed -i "s/${opartuuidr}/${npartuuidr}/g" ~/backupimg/tgt_boot/cmdline.txt

17. Modificar./tgt_Root/etc/fstab

sudo sed -i "s/${opartuuidb}/${npartuuidb}/g" ~/backupimg/tgt_Root/etc/fstab
sudo sed -i "s/${opartuuidr}/${npartuuidr}/g" ~/backupimg/tgt_Root/etc/fstab

18. Desmontar la partición

sudo umount tgt_boot tgt_Root
sudo kpartx -d /dev/loop6
sudo losetup -d /dev/loop6
rmdir tgt_boot tgt_Root

edit_fstab

19. Grabar imagen

Raspberry Pi utilizando la herramienta de grabación de imágenes incorporada para grabar Raspberry Pi Imager, raspberrypi.img se grabará en la tarjeta SD.

Generador de imágenes Raspberry Pi

20. Extiende la partición raíz

Inserte la tarjeta SD en la Raspberry Pi para arrancar, ejecute df -h para verificar el espacio en disco, y encontrará que el tamaño total es de solo 1.5G, debe ejecutar el comando sudo raspi-config para configurar, Opciones avanzadas = > Expanda el sistema de archivos, expanda la partición raíz a toda la tarjeta SD.

sudo raspi-config

21. Reinicie para reiniciar la Raspberry Pi para que surta efecto

reboot

referencia:

Original: https://www.cooooder.com/archives/20200114

Supongo que te gusta

Origin blog.csdn.net/zszangy/article/details/114395448
Recomendado
Clasificación