modified: rpi_backup.md
parent
faecab5940
commit
92099b62de
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue