modified: rpi_backup.md
parent
faecab5940
commit
92099b62de
|
@ -32,13 +32,13 @@ Raspberry Pi 4, 400 и Compute Module 4 используют EEPROM для за
|
||||||
сохранить текущие настройки EEPROM во внешний файл
|
сохранить текущие настройки EEPROM во внешний файл
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@sdboot:~ $ sudo rpi-eeprom-config -o ~/eeprom.conf
|
pi@host:~ $ sudo rpi-eeprom-config -o ~/eeprom.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
применить конфигурацию EEPROM из файла
|
применить конфигурацию EEPROM из файла
|
||||||
|
|
||||||
```bash
|
```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
|
1. Необходимо создать конфигурационный файл EEPROM, который установит загрузку на USB
|
||||||
|
|
||||||
```bash
|
```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]
|
[all]
|
||||||
BOOT_UART=0
|
BOOT_UART=0
|
||||||
WAKE_ON_GPIO=1
|
WAKE_ON_GPIO=1
|
||||||
|
@ -59,7 +63,7 @@ BOOT_ORDER=0xf4
|
||||||
2. Создать скрипт, который будет выполнять обновление конфигурации EEPROM
|
2. Создать скрипт, который будет выполнять обновление конфигурации EEPROM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@sdboot:~ $ vim rpi_usb_boot.sh
|
pi@host:~ $ vim /opt/backup_from_usb/rpi_usb_boot.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -98,7 +102,7 @@ reboot
|
||||||
Добавить права на выполнение
|
Добавить права на выполнение
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@sdboot:~ $ chmod +x rpi_usb_boot.sh
|
pi@host:~ $ chmod +x /opt/backup_from_usb/rpi_usb_boot.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Выполнить настройку запуска скрипта по расписанию.
|
3. Выполнить настройку запуска скрипта по расписанию.
|
||||||
|
@ -106,28 +110,34 @@ pi@sdboot:~ $ chmod +x rpi_usb_boot.sh
|
||||||
*т.к. обновление конфигурации EEPROM необходимо выполнять с привилегиями root, настраивать расписание нужно также пользователя root, чтобы скрипт запускался с повышенными привилегиями.*
|
*т.к. обновление конфигурации EEPROM необходимо выполнять с привилегиями root, настраивать расписание нужно также пользователя root, чтобы скрипт запускался с повышенными привилегиями.*
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@sdboot:~ $ sudo crontab -e
|
pi@host:~ $ sudo crontab -e
|
||||||
```
|
```
|
||||||
|
|
||||||
например, для запуска скрипта каждую среду в 2 часа ночи, необходимо добавить строку
|
например, для запуска скрипта каждую среду в 2 часа ночи, необходимо добавить строку
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
0 2 * * 3 /opt/scripts/rpi_usb_boot.sh
|
0 2 * * 3 /opt/backup_from_usb/rpi_usb_boot.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
**На системе загруженной с USB**
|
**На системе загруженной с USB**
|
||||||
|
|
||||||
|
*для этого нужно запустить скрипт `/opt/backup_from_usb/rpi_usb_boot.sh` от рута или вручную переопределить загрузочный носитель с помощью `sudo rpi-eeprom-config -a /opt/backup_from_usb/usb_eeprom.conf` и перезагрузиться*
|
||||||
|
|
||||||
4. Обеспечить подключение к хранилищу по SSH на основе ключа
|
4. Обеспечить подключение к хранилищу по SSH на основе ключа
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@usbboot:~ $ ssh-keygen
|
pi@host-usb:~ $ ssh-keygen
|
||||||
pi@usbboot:~ $ ssh-copy-id user@nas
|
pi@host-usb:~ $ ssh-copy-id user@nas
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Создать конфигурационный файл EEPROM, который вернёт загрузку на SD
|
5. Создать конфигурационный файл EEPROM, который вернёт загрузку на SD
|
||||||
|
|
||||||
```bash
|
```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]
|
[all]
|
||||||
BOOT_UART=0
|
BOOT_UART=0
|
||||||
WAKE_ON_GPIO=1
|
WAKE_ON_GPIO=1
|
||||||
|
@ -137,6 +147,10 @@ BOOT_ORDER=0xf1
|
||||||
|
|
||||||
6. Подготовить основной скрипт, который выполнит создание образа SD-карты и передаст его по SSH в сетевое хранилище
|
6. Подготовить основной скрипт, который выполнит создание образа SD-карты и передаст его по SSH в сетевое хранилище
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pi@host-usb:~ $ sudo vim /opt/backup_rpi/rpi_backup.sh
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
@ -163,7 +177,7 @@ fi
|
||||||
server=user@nas
|
server=user@nas
|
||||||
|
|
||||||
# Путь сохранения на удалённом сервре
|
# Путь сохранения на удалённом сервре
|
||||||
remote_path=/mnt/disk2/Backup/rpi
|
remote_path=/mnt/main/data/Backup/bastion_rpi
|
||||||
|
|
||||||
# Необходимо убедиться, что в папке присутствует конфиг EEPROM для изменения порядка загрузки
|
# Необходимо убедиться, что в папке присутствует конфиг EEPROM для изменения порядка загрузки
|
||||||
eeprom_conf="sd_eeprom.conf"
|
eeprom_conf="sd_eeprom.conf"
|
||||||
|
@ -174,7 +188,7 @@ if [ ! -e "./$eeprom_conf" ]; then
|
||||||
fi
|
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
|
# Имя диска, над которым будем работать. SD в RPI называется mmcblk0
|
||||||
disk=/dev/mmcblk0
|
disk=/dev/mmcblk0
|
||||||
|
@ -205,6 +219,12 @@ rpi-eeprom-config -a ./$eeprom_conf
|
||||||
reboot
|
reboot
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Добавить права на выполнение
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pi@host-usb:~ $ sudo chmod +x /opt/backup_rpi/rpi_backup.sh
|
||||||
|
```
|
||||||
|
|
||||||
7. Обеспечить выполнение скрипта при загрузке с USB. Рассмотрим 3 способа.
|
7. Обеспечить выполнение скрипта при загрузке с USB. Рассмотрим 3 способа.
|
||||||
|
|
||||||
7.1. /etc/rc.d/rc.local
|
7.1. /etc/rc.d/rc.local
|
||||||
|
@ -212,7 +232,7 @@ reboot
|
||||||
Для выполнения пользовательского скрипта при загрузке, достаточно указать к нему полный путь в файле `/etc/rc.d/rc.local`. Затем необходимо добавить права на выполнение
|
Для выполнения пользовательского скрипта при загрузке, достаточно указать к нему полный путь в файле `/etc/rc.d/rc.local`. Затем необходимо добавить права на выполнение
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@usbboot:~ $ chmod +x /etc/rc.d/rc.local
|
pi@host-usb:~ $ chmod +x /etc/rc.d/rc.local
|
||||||
```
|
```
|
||||||
|
|
||||||
7.2. crontab
|
7.2. crontab
|
||||||
|
@ -220,7 +240,7 @@ pi@usbboot:~ $ chmod +x /etc/rc.d/rc.local
|
||||||
Добавить задание в crontab с параметром `@reboot`
|
Добавить задание в crontab с параметром `@reboot`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@reboot /opt/scripts/rpi_backup.sh
|
@reboot /opt/backup_rpi/rpi_backup.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
7.3. Сервис systemd
|
7.3. Сервис systemd
|
||||||
|
@ -228,11 +248,11 @@ pi@usbboot:~ $ chmod +x /etc/rc.d/rc.local
|
||||||
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог `/etc/systemd/system/`.
|
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог `/etc/systemd/system/`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@usbboot:~ $ vim /etc/systemd/system/rpi_backup.service
|
pi@host-usb:~ $ vim /etc/systemd/system/rpi_backup.service
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@usbboot:~ $ cat /etc/systemd/system/rpi_backup.service
|
pi@host-usb:~ $ cat /etc/systemd/system/rpi_backup.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Run a Backup Script at Startup
|
Description=Run a Backup Script at Startup
|
||||||
After=default.target
|
After=default.target
|
||||||
|
|
Loading…
Reference in New Issue