diff --git a/rpi_backup.md b/rpi_backup.md index 4ab33ca..b169a3c 100644 --- a/rpi_backup.md +++ b/rpi_backup.md @@ -32,13 +32,13 @@ Raspberry Pi 4, 400 и Compute Module 4 используют EEPROM для за сохранить текущие настройки EEPROM во внешний файл ```bash -pi@sdboot:~ $ sudo rpi-eeprom-config -o ~/eeprom.conf +pi@host:~ $ sudo rpi-eeprom-config -o ~/eeprom.conf ``` применить конфигурацию EEPROM из файла ```bash -pi@sdboot:~ $ sudo rpi-eeprom-config -a ~/eeprom.conf +pi@host:~ $ sudo rpi-eeprom-config -a ~/eeprom.conf ``` Осталось окончательно сформировать архитектуру нашего решения по созданию образа. @@ -48,7 +48,11 @@ pi@sdboot:~ $ sudo rpi-eeprom-config -a ~/eeprom.conf 1. Необходимо создать конфигурационный файл EEPROM, который установит загрузку на USB ```bash -pi@sdboot:~ $ cat usb_eeprom.conf +pi@host:~ $ sudo mkdir /opt/backup_from_usb && sudo vim /opt/backup_from_usb/usb_eeprom.conf +``` + +```bash +pi@host:~ $ cat /opt/backup_from_usb/usb_eeprom.conf [all] BOOT_UART=0 WAKE_ON_GPIO=1 @@ -59,7 +63,7 @@ BOOT_ORDER=0xf4 2. Создать скрипт, который будет выполнять обновление конфигурации EEPROM ```bash -pi@sdboot:~ $ vim rpi_usb_boot.sh +pi@host:~ $ vim /opt/backup_from_usb/rpi_usb_boot.sh ``` ```bash @@ -98,7 +102,7 @@ reboot Добавить права на выполнение ```bash -pi@sdboot:~ $ chmod +x rpi_usb_boot.sh +pi@host:~ $ chmod +x /opt/backup_from_usb/rpi_usb_boot.sh ``` 3. Выполнить настройку запуска скрипта по расписанию. @@ -106,28 +110,34 @@ pi@sdboot:~ $ chmod +x rpi_usb_boot.sh *т.к. обновление конфигурации EEPROM необходимо выполнять с привилегиями root, настраивать расписание нужно также пользователя root, чтобы скрипт запускался с повышенными привилегиями.* ```bash -pi@sdboot:~ $ sudo crontab -e +pi@host:~ $ sudo crontab -e ``` например, для запуска скрипта каждую среду в 2 часа ночи, необходимо добавить строку ```bash -0 2 * * 3 /opt/scripts/rpi_usb_boot.sh +0 2 * * 3 /opt/backup_from_usb/rpi_usb_boot.sh ``` **На системе загруженной с USB** +*для этого нужно запустить скрипт `/opt/backup_from_usb/rpi_usb_boot.sh` от рута или вручную переопределить загрузочный носитель с помощью `sudo rpi-eeprom-config -a /opt/backup_from_usb/usb_eeprom.conf` и перезагрузиться* + 4. Обеспечить подключение к хранилищу по SSH на основе ключа ```bash -pi@usbboot:~ $ ssh-keygen -pi@usbboot:~ $ ssh-copy-id user@nas +pi@host-usb:~ $ ssh-keygen +pi@host-usb:~ $ ssh-copy-id user@nas ``` 5. Создать конфигурационный файл EEPROM, который вернёт загрузку на SD ```bash -pi@usbboot:~ $ cat sd_eeprom.conf +pi@host-usb:~ $ sudo mkdir opt/backup_rpi && sudo vim /opt/backup_rpi/sd_eeprom.conf +``` + +```bash +pi@host-usb:~ $ cat /opt/backup_rpi/sd_eeprom.conf [all] BOOT_UART=0 WAKE_ON_GPIO=1 @@ -137,6 +147,10 @@ BOOT_ORDER=0xf1 6. Подготовить основной скрипт, который выполнит создание образа SD-карты и передаст его по SSH в сетевое хранилище +```bash +pi@host-usb:~ $ sudo vim /opt/backup_rpi/rpi_backup.sh +``` + ```bash #!/bin/bash @@ -163,7 +177,7 @@ fi server=user@nas # Путь сохранения на удалённом сервре -remote_path=/mnt/disk2/Backup/rpi +remote_path=/mnt/main/data/Backup/bastion_rpi # Необходимо убедиться, что в папке присутствует конфиг EEPROM для изменения порядка загрузки eeprom_conf="sd_eeprom.conf" @@ -174,7 +188,7 @@ if [ ! -e "./$eeprom_conf" ]; then fi # Имя образа -name=$(date +%Y-%m-%d)_rpi_image.img.gz +name=$(echo $(date +%Y-%m-%d)_${HOSTNAME}_image.img.gz | sed 's/-usb//') # Имя диска, над которым будем работать. SD в RPI называется mmcblk0 disk=/dev/mmcblk0 @@ -205,6 +219,12 @@ rpi-eeprom-config -a ./$eeprom_conf reboot ``` +Добавить права на выполнение + +```bash +pi@host-usb:~ $ sudo chmod +x /opt/backup_rpi/rpi_backup.sh +``` + 7. Обеспечить выполнение скрипта при загрузке с USB. Рассмотрим 3 способа. 7.1. /etc/rc.d/rc.local @@ -212,7 +232,7 @@ reboot Для выполнения пользовательского скрипта при загрузке, достаточно указать к нему полный путь в файле `/etc/rc.d/rc.local`. Затем необходимо добавить права на выполнение ```bash -pi@usbboot:~ $ chmod +x /etc/rc.d/rc.local +pi@host-usb:~ $ chmod +x /etc/rc.d/rc.local ``` 7.2. crontab @@ -220,7 +240,7 @@ pi@usbboot:~ $ chmod +x /etc/rc.d/rc.local Добавить задание в crontab с параметром `@reboot` ```bash -@reboot /opt/scripts/rpi_backup.sh +@reboot /opt/backup_rpi/rpi_backup.sh ``` 7.3. Сервис systemd @@ -228,11 +248,11 @@ pi@usbboot:~ $ chmod +x /etc/rc.d/rc.local Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог `/etc/systemd/system/`. ```bash -pi@usbboot:~ $ vim /etc/systemd/system/rpi_backup.service +pi@host-usb:~ $ vim /etc/systemd/system/rpi_backup.service ``` ```bash -pi@usbboot:~ $ cat /etc/systemd/system/rpi_backup.service +pi@host-usb:~ $ cat /etc/systemd/system/rpi_backup.service [Unit] Description=Run a Backup Script at Startup After=default.target