September 6, 2022

Скрипт авто-бекапа для ноды NEAR

В рамках 14 задания создадим скрипт для резервного копирования базы данных ноды Near и её архивирования. Так же добавим задание на запуск скрипта в планировщик задач Cron

sudo apt install moreutils zip
cd scripts
nano backup.sh
#!/bin/bash

DATE=$(date +%Y-%m-%d)
DATADIR=/root/.near
BACKUPS_DIR=/root/backups
BACKUP_DATA=${BACKUPS_DIR}/near_${DATE}
SERVICE_NEAR_NAME=nearbackupd.service

NEW_BACKUP_FILE=$BACKUP_DATA.zip

# создание директории, если ещё не создана
if [ ! -d "$BACKUPS_DIR" ]; then
  echo "Create directory $BACKUPS_DIR" | ts
  mkdir $BACKUPS_DIR
fi

# удаление старого бэкапа
OLD_BACKUPS=`ls $BACKUPS_DIR/*.zip`
for file in $OLD_BACKUPS
  do
     rm $file
     if [ ! -d "$file" ]; then
       echo "$file has been deleted" | ts
     fi
  done

sudo systemctl stop $SERVICE_NEAR_NAME
wait

echo "New backup started" | ts
zip -r $BACKUP_DATA $DATADIR
echo "Backup completed" | ts
sudo systemctl start $SERVICE_NEAR_NAME

Добавление разрешений для исполняемого файла

chmod +x backup.sh

Запуск скрипта

sudo ./backup.sh

Создание задачи crontab, для запуска скрипта

sudo nano /etc/crontab

добавить в конце строку

0 * 2 * * root /root/scripts/backup.sh >> /root/logs/backup.log