Резервное копирование Raspberry Pi3 (2 метода)

После изучения различных механизмов резервного копирования настроенной системы с Raspberry и ее сервисов – остановился на двух методах

  1. Копирование всей системы на внешнюю Flash USB карту Linux утилитой rsync.
  2. Копирование с помощью утилиты dd в .ISO образ на удаленный хост (например: Synology)

Оба метода у меня работаю по сей день и себя оправдали на протяжении длительного времени. Теперь более подробно об этих методах.

  1. Копирование с помощью утилиты rsync

1.1. Перед началом всех манипуляций нам необходимо, клонировать загрузочную карту с raspberry на новую карту 1:1. Как это сделать – … гуглим. Подсказка : используем утилиту Win32DiskImager. Делов на 5 копеек, поэтому останавливаться на этом не буду.

Нам необходим USB-переходник c SD-картой (как у меня) или простая USB-флэшка такого же объема как на Raspberry. В моем случае это 8Gb.

Вообщем клон сделали. Создаем на карте загрузочной системе с raspberry два каталога /backupsd/sda1 и /backupsd/sda2 для монтирования к ним разделов новой флэшки.

root@rb1:/etc/scripts# mkdir /backupsd/sda1

root@rb1:/etc/scripts# mkdir /backupsd/sda2

Вставляем карту в любой USB-порт на raspberry и пробуем монтировать,

root@rb1> fdisk -l

ищем, что-то типа:

Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
/dev/sda2 94208 15728639 15634432 7.5G 83 Linux

у вас может быть /dev/sdb и т.д.

Cоздаем скрипт /etc/scripts/mount.sh с содержимым следующего вида и с правами chmod 744:

#!/bin/bash
sudo mount /dev/sda1 /backupsd/sda1
sudo mount /dev/sda2 /backupsd/sda2

Включаем скрипт в автозагрузку и пробуем его запустить

root@rb1> sudo rc-update add mount.sh defaults

root@rb1> ./mount.sh

Теперь создаем еще один скрипт /etc/scripts/SD_backup.sh, в котором указываем какие каталоги мы будем синхронизировать на резервную USB карту. Вот его содержимое:

 

#!/bin/sh

# Boot

rsync -artgov --delete --progress --exclude "cmdline.txt" /boot/backupsd/sda2

# System native Linux

rsync -artgov --delete --progress /bin /backupsd/sda2
rsync -artgov --delete --progress --exclude "fstab" /etc /backupsd/sda2
rsync -artgov --delete --progress /home /backupsd/sda2
rsync -artgov --delete --progress /lib /backupsd/sda2
rsync -artgov --delete --progress /media /backupsd/sda2
rsync -artgov --delete --progress /opt /backupsd/sda2
rsync -artgov --delete --progress /root /backupsd/sda2
rsync -artgov --delete --progress /sbin /backupsd/sda2
rsync -artgov --delete --progress /srv /backupsd/sda2
rsync -artgov --delete --progress /usr /backupsd/sda2
rsync -artgov --delete --progress /var /backupsd/sda2

здесь пропускаем копирование файлов cmdline.txt из /boot и fstab из /etc. Почему? потому что у нас могут меняются UUID дисков. Если у вас они разные для USB-Flash и SD-raspberry то меняем (а при клонировании так и может быть, то ничего не трогаем). Если с резервной карты USB-Flash не грузится / раздел, то значит UUID дисков изменились.

Подредактируем эти 2 файла : (UUID дисков должны совпадать на носителях).

/boot/cmdline.txt

root=PARTUUID=bb1e6e5d-02

/etc/fstab

PARTUUID=bb1e6e5d-01 /boot vfat defaults 0 2
PARTUUID=bb1e6e5d-02 / ext4 defaults,noatime 0 1

1.2. Создаем cron задачу для root (в моем случае каждое ВС в 03:00 ночи запускаем синхронизация)

root@rb1> crontab -e -u root

# backups

0 3 * * 0 /etc/scripts/SD_backup.sh

Копируем раз в неделю. Все. Можете добавить внусностей, как отправка отчетов бэкапов на почту.

У вас теперь всегда будет актуальная резервная загрузочная версия с raspberry и всеми настроенными сервисами. Проверено – работает!

2. Копирование с помощью утилиты dd в ISO

Этот случае более тяжелый и трудоемкий. применим когда у нас наблюдается физический износ носителя. Но нам он тоже пригодится. Копировать данные с Raspberry ISO будем на удаленный хост.

Создаем скрипт для копирования в /etc/scripts/backup_linux_sd.sh (здесь храним все наши служебные скрипты)  с содержимым:

 

#!/bin/bash
# backup SD-card to synology

# Clean old backups to /backup/iso

find /backup/iso/ -name "*.iso" -mtime +30 -delete

dd bs=4M if=/dev/mmcblk0 of=/backup/iso/rb1-`date +%d%m%y`.iso

Создаем каталог на диске с raspberry /backup (iso это каталог на удаленном хосте)

root@rb1:/etc/scripts# mkdir /backup

Монтируем удаленный NFS-хост на synology (на диске с Synology создаем шару /BACKUP/raspberry и выдаем гостевые права на запись)

root@rb1:>mount 192.168.1.15:/volume1/BACKUP/raspberry /backup/raspberry, 

где:

192.168.1.15 – IP адрес удаленного хоста Synology

/volume1/BACKUP/raspberry – NFS шара

имеем

root@rb1> ls /backup
iso domoticz

вот в папку iso и будем складировать наши образы. а в папке domoticz я бэкаплю данные для domoticz.

Создаем cron задачу для root (в моем случае каждое ВС в 01:00 ночи запускаем бэкап)

root@rb1> crontab -e -u root

# backups

0 1 * * 0 /etc/scripts/backup_linux_sd.sh

Готово.

root@rb1:/etc/scripts# ls /backup/iso -l
total 39321640
drwxrwxrwx 2 root users 4096 Nov 26 13:27 @eaDir
-rwxrwxrwx 1 root root 8053063680 Dec 2 19:18 rb1-021217.iso
-rwxrwxrwx 1 root root 8053063680 Dec 3 01:15 rb1-031217.iso
-rwxrwxrwx 1 root root 8053063680 Dec 10 01:15 rb1-101217.iso
-rwxrwxrwx 1 root root 8053063680 Dec 17 01:14 rb1-171217.iso

Всегда будем иметь актуальные 5 версий. 6-ая будет удаляться.

Bonus: Вот вам еще один вариант как копировать систему с Rasperry на удаленный хост:

#!/bin/sh
NOW=$(date +"%Y-%m-%d")
NAME="RPI-Domoticz"
SOURCE="root@192.168.2.2:/home/pi/domoticz/"
DESTINATION="/volume1/homes/guy/backup/$NAME"
LOGFILE=/volume1/homes/guy/backup/__Logs/$NAME.$NOW.txt
echo ------------------- START $NAME -- $(date +"%Y-%m-%d %H:%M:%S") | tee -a $LOGFILE
rsync -aP --exclude-from '/volume1/homes/guy/backup/excludedfiles.txt' -e "ssh -i /root/.ssh/home" --stats --delete-after --links --link-dest="$DESTINATION/__prev/" "$SOURCE" "$DESTINATION/$NOW" | tee -a $LOGFILE
rm -f "$DESTINATION/__prev"
ln -s "$NOW" "$DESTINATION/__prev"
echo ------------------- END $NAME -- $(date +"%Y-%m-%d %H:%M:%S") | tee -a $LOGFILE

 

В следующей статье поговорим о Резервное копирование и восстановление domoticz.

1 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
2 комментариев
Популярные
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
ывавуа
ывавуа
21.12.2021 11:07

эта хрень сбоку в виде соц сетей только мешает. и сайт ваш шланг!

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x