master
Долгий Артём 2023-11-17 17:00:23 +03:00
parent 17b1a70b75
commit a3123b7dee
1 changed files with 17 additions and 53 deletions

View File

@ -5,29 +5,14 @@
1. Обеспечить подключение к хранилищу резервных копий по SSH на основе ключа пользователю root, т.к. скрипт будет выполняться от его имени
```bash
root@host-usb:~ $ ssh-keygen
root@host-usb:~ $ ssh-copy-id da2001@nas.dav.lan
root@opisd:~# ssh-keygen
root@opisd:~# ssh-copy-id da2001@nas.dav.lan
```
5. Создать конфигурационный файл EEPROM, который вернёт загрузку на SD
1. Подготовить скрипт, который выполнит создание образа eMMC и передаст его по SSH в сетевое хранилище
```bash
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
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf1
```
6. Подготовить основной скрипт, который выполнит создание образа SD-карты и передаст его по SSH в сетевое хранилище
```bash
pi@host-usb:~ $ sudo vim /opt/backup_rpi/rpi_backup.sh
da2001@opisd:~$ sudo vim /opt/backup_opi/opi_backup.sh
```
```bash
@ -35,14 +20,10 @@ pi@host-usb:~ $ sudo vim /opt/backup_rpi/rpi_backup.sh
###################################################################################################
# Скрипт создаёт образ SD-карты Raspberry PI и отправляет его на удалённый сервер по SSH,
# Скрипт создаёт образ eMMC OrangePI 5 Plus и отправляет его на удалённый сервер по SSH,
# при этом на удалённом сервере происходит сжатие образа для экономии места.
# Сжатие происходит на удалённом сервере, чтобы минимизировать операции записи на Flash память,
# с которой произведена загрузка RPI.
# После создания образа, происходит обновление конфигурации EEPROM Raspberry PI для загрузки с SD карты.
# В директории с этим скриптом должен находится конфигурационный файл EEPROM - $eeprom_conf
# Для корректной работы скрипта, EEPROM RPI должен поддерживать режим переключения загрузки SD<=>USB.
# с которой произведена загрузка OrangePI.
###################################################################################################
@ -56,28 +37,16 @@ fi
server=da2001@nas.dav.lan
# Путь сохранения на удалённом сервре
remote_path=/mnt/main/data/Backup/bastion_rpi
remote_path=/mnt/main/data/Backup/opi1
# Директория, в которой хранится конфигурационный файл EEPROM
eeprom_conf_path=/opt/backup_rpi
# Необходимо убедиться, что в папке присутствует конфиг EEPROM для изменения порядка загрузки
eeprom_conf="sd_eeprom.conf"
if [ ! -e "$eeprom_conf_path/$eeprom_conf" ]; then
ssh $server "echo Файл настроек EEPROM $eeprom_conf не найден" > $remote_path/lastlog 2>&1
exit
fi
# Необходимо синхронизировать время, т.к. сейчас оно отстаёт на неделю.
# Для этого используем утилиту ntpdate, Её необходимо заранее установить sudo apt install ntpdate.
ntpdate ntp1.vniiftri.ru
# Необходимо синхронизировать время
chronyc -a makestep
# Имя образа
name=$(echo $(date +%Y-%m-%d)_${HOSTNAME}_image.img.gz | sed 's/-usb//')
name=$(echo $(date +%Y-%m-%d)_${HOSTNAME}_image.img.gz | sed 's/-emmc//')
# Имя диска, над которым будем работать. SD в RPI называется mmcblk0
disk=/dev/mmcblk0
disk=/dev/mmcblk1
# запишем в переменную последний сектор последнего раздела диска
last_sector=$(fdisk -l -o end $disk | tail -1)
@ -98,9 +67,6 @@ ssh $server 'echo "$(tail -5 $remote_path/log)" > $remote_path/log'
count_copies=3
ssh $server "find $remote_path -type f -name '*_image.img.gz' -printf '%T@ %p\n' | sort -nr | cut -d' ' -f 2- | tail -n +$(($count_copies+1)) | xargs rm -f --"
# Необходимо переключить EEPROM на загрузку с SD карты
rpi-eeprom-config -a $eeprom_conf_path/$eeprom_conf
# Перезагрузка
/usr/sbin/reboot
@ -109,19 +75,21 @@ rpi-eeprom-config -a $eeprom_conf_path/$eeprom_conf
Добавить права на выполнение
```bash
pi@host-usb:~ $ sudo chmod +x /opt/backup_rpi/rpi_backup.sh
da2001@opisd:~$ sudo chmod +x /opt/backup_opi/opi_backup.sh
```
7. Обеспечить выполнение скрипта при загрузке с USB. Сервис systemd
**!!Актуализировать!!**
7. Обеспечить выполнение скрипта при загрузке с SD. Сервис systemd
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог `/etc/systemd/system/`.
```bash
pi@host-usb:~ $ sudo vim /etc/systemd/system/rpi_backup.service
da2001@opisd:~$ sudo vim /etc/systemd/system/rpi_backup.service
```
```bash
pi@host-usb:~ $ cat /etc/systemd/system/rpi_backup.service
da2001@opisd:~$ cat /etc/systemd/system/rpi_backup.service
[Unit]
Description=Run a Backup Script at Startup
After=default.target
@ -141,7 +109,3 @@ pi@host-usb:~ $ sudo systemctl enable rpi_backup.service
```
***
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration>
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-eeprom>
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER>