udvnl

<<< Назад

Raspberry Pi: немного о резервном копировании и актуальной копии системы

Небольшая заметка по созданию актуальной копии как MajorDoMo, так и всей ОС с настройками установленными приложениями.

Некоторое время назад, я считал, что наиболее лучший способ создания копии SD карты Raspberry является создание образа карты. Но этот способ имеет несколько недостатков: один из которых для создания образа необходим перерыв в работе, к тому же сохранение образа или же восстановление карты памяти может занимать длительное время.
Для себя опробовал несколько измененный вариант резервного копирования.

Подготовительные действия

Нам понадобится ещё одна карта памяти и SD-USB картридер.
Первоначально делаем образ вначале на ПК с помощью программы для работы с образами (я пользуюсь USB Image tool), об его использовании немного написано в одной из заметок Установка базового образа MajorDoMo на Raspberry P... и клонируем на резервную карточку.
Подключаем с помощью картридера в один из USB разъёмов резервную карту памяти.

Проверяем определилась ли карта:

lsblk

ответ системы:

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    1 29.1G  0 disk
├─sda1        8:1    1 43.2M  0 part /boot
└─sda2        8:2    1 14.4G  0 part
mmcblk0     179:0    0 14.5G  0 disk
├─mmcblk0p1 179:1    0 43.2M  0 part
└─mmcblk0p2 179:2    0 14.4G  0 part /*

Можем посмотреть доп информацию:

lsblk -fp
NAME             FSTYPE LABEL  UUID                                 MOUNTPOINT
https://connect.smartliving.ru/cms/data_images/1453_image.png
├─/dev/sda1      vfat   boot   3725-1C05                            /boot
└─/dev/sda2      ext4   rootfs fd695ef5-f047-44bd-b159-2a78c53af20a
/dev/mmcblk0
├─/dev/mmcblk0p1 vfat   boot   3725-1C05
└─/dev/mmcblk0p2 ext4   rootfs fd695ef5-f047-44bd-b159-2a78c53af20a /

Как видим у нас присутствуют две карты памяти одинаковые по размеры с одинаковыми разделами.
SDA1 - загрузочный раздел резервной карты памяти (установленной в картридер).
SDA2 - корневой раздел со всеми данными.
mmcblk0 основная карта памяти RPI, с которой на данный момент работает система. mmcblk0p1 -загрузочный раздел, mmcblk0p2 корневой раздел.
Создаем папку для монтирования:

 sudo mkdir /mnt/usb

Теперь монтируем флешку с помощью команды mount в созданную директорию:

sudo mount /dev/sda1 /mnt/ backup_root/ 

Можем просмотреть что находится на резервной карте памяти

sudo ls -l /mnt/backup_root/

Создаем файл исключений, того, что не стоит резервировать:

nano /home/pi/not_backup

Со Следующим содержимым:

/boot/*
/debootstrap/*
/dev/*
/media/*
/mnt/*
/proc/*
/sys/*
/tmp/*
/run/*
/var/tmp/*
/var/cache/*
/var/log/*
/var/run/*

И запустим команду на синхронизацию данных (при этом измененные и новые файлы копируются на резервную карту памяти, если на ней есть неактуальные директории и файлы, то они удаляются).

sudo rsync -aHv --delete --delete-after --exclude-from=/home/pi/not_backup / /mnt/backup_root/ 

Первое копирование может занять довольно значительное время, особенно если от момента создания образа, до его синхронизации было много изменений.

Включение резервного копирования в MajorDoMo

Перейдём к нашему " Умному дому".
Открываем Панель управления - Сценарии и создадим новый со следующим содержимым (его я включил в раздел Режимы работы)

$filename  = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);

exec ("sudo mkdir -p /mnt/backup_root");
exec ("sudo mount -p /dev/sda1 /mnt/ backup_root/");  
exec ("sudo rsync -aHv --delete --delete-after --exclude-from=/home/pi/not_backup / /mnt/backup_root/ 2>&1 &");
say("Сохранение выполнено",2);

Сценарий можно разделить на две части.
Первая по умолчанию при установке из базового образа, база данных сохраняетсь не постоянно, а через 15 минут, поэтому принудительно схраним её.
Вторая часть, практически повторение, то что делали из командной строки: создаем директорию для монтирования (игрнорируя ошибки), монтируем карту памяти в эту директорию и производим синхронизацию, по окончании выдаём отчёт о выполнении.

Переходим в панели управления к Меню Управления и добавим новый раздел BackUpToFlash. Его настройки на скрине:

После этого у нас появится в разделе на главной странице сервис новая кнопка, BackUpToFlash

При нажатии на которую будет выполнена синхронизация данных. В качестве иллюстрации на скрине для проверки приведён htop.
Последнее действие - проверка актуальной версии. Выключаем питание, меняем местами карточки в малинке. При загрузке видим пункт резервного копирования в меню. Значит способ заработал ))

При включенной малине не забываем перед извлечением резрвной карты памяти или картридера необходимо размонтировать карту. Выполняется это командой

umount /dev/sda1

Вот и пока всё, немного добавлю:
у меня работает уже несколько недель, при этом разница с копированием boot раздела не заметил, поэтому этот пункт я осознно пропустил, работает и без него.
На мой взгляд довольно удобная штука не только для создания резервирования, но и для просмотра изменений, отката на рабочую версию, как системы MajorDoMo, так и самой ОС, сторонних сервисов и программ .

Обсуждение (0) (7)

Смотрите так же:
06.07.2020 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
07.05.2020 Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo
28.04.2020 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
07.10.2019 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
11.09.2019 Создание голосового оповещения MajorDoMo
21.08.2019 Установка USB аудиокарты и настройка звука в Raspberry Pi
04.04.2019 Сертификация в Z-Wave
11.03.2019 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
04.02.2019 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
23.12.2018 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
20.10.2018 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
14.08.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
08.07.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
29.06.2018 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
21.06.2018 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

Минск, Беларусь

На форуме: udvnl