Авторизация

РЕЗЕРВНОЕ КОПИРОВАНИЕ RASPBERRY PI С VPNKI SPACE

Рейтинг:  4 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна
 

 

Часть 2. Еженедельный бэкап

Теперь создадим второй файл, который будет запускаться по понедельникам и сохранять данные на VPNKI Space по протоколу FTP. Для этого:

 

2.1. Запустите Space и активируйте доступ через FTP по этой инструкции

 

2.2. Зайдите любым ftp клиентом и создайте на Space директорию с названием /my_backups - там будут сохраняться ваши файлы резервных копий

 

2.3. Теперь вернемся к RaspberryPi и поставим утилиту для выгрузки файлов wput (аналог wget), которую мы будем использовать для передачи файлов по протоколу FTP с докачкой

sudo apt-get install wput

 


2.4. Создадим в директории /backup новый файл backup_ew.sh (ew - every week, еженедельно)

sudo touch /backup/backup_ew.sh

 

 

2.5. Откроем его в редакторе nano

sudo nano /backup/backup_ew.sh

Добавим следующий текст, но, по традиции, читаем комментарии к переменным в самом начале файла:

#!/bin/bash
#
# Send backup to VPNKI Space via FTP at 4:00 every Monday
# Stdout and Stderr redirects to log-file
#
# Example run - ./backup_ew.sh
#

### Переменные / Variables ###
log="/var/log/backup.log" # Логфайл
vpnki_username="aivanov" # Ваше имя VPNKI
vpnki_password="$1$90Ikjlkiusori0988777wygew" # Ваш API ключ VPNKI
days_to_store="30" # Период в днях хранения резервных копий

echo -e "\n" >> $log 2>&1
echo -e "### Start section BACKUP EVERY WEEK ###" >> $log 2>&1
starttime=`date +%s` >> $log 2>&1
echo "Start time: $(date)" >> $log 2>&1

cd /backup

### Сохраняем архивированный файл в VPNKI Space ###
today_backup="backup-`hostname`-`date '+%Y-%m-%d'`.tar.gz" >> $log 2>&1
if [ -e $today_backup ]
    then
    sudo wput --basename=/backup/ /backup/$today_backup ftp://$vpnki_username:$Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра./my_backups/
    echo "$today_backup sent into VPNKI Space" >> $log 2>&1

    ### Ищем старые бэкапы старше 30 дней и удаляем их ###
    wget -q --no-remove-listing ftp://$vpnki_username:$Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра./my_backups/

    while read line; do
      if echo "$line" | grep -q backup-`hostname`
        then
          IFS=', ' read -r -a array <<< "$line"
          filename="${array[8]}"

          fullname=$(echo $filename | cut -f 1 -d '.')
          extension1=$(echo $filename | cut -f 2 -d '.')
          extension2=$(echo $filename | cut -f 3 -d '.')

          name=$(echo $fullname | cut -f1 -d-)
          hostname=$(echo $fullname | cut -f2 -d-)
          year=$(echo $fullname | cut -f3 -d-)
          month=$(echo $fullname | cut -f4 -d-)
          day=$(echo $fullname | cut -f5 -d-)

          backup_date=`date -d $year$month$day '+%Y-%m-%d'`
          last_store_date=`date '+%Y-%m-%d' -d "$days_to_store day ago"`

          if [[ $backup_date < $last_store_date ]];
            then
              old_backup=$name-$hostname-$year-$month-$day.$extension1.$extension2
              echo "This backup is old and will be deleted - $old_backup" >> $log 2>&1
              sudo wdel -q ftp://$vpnki_username:$Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра./my_backups/$old_backup >> $log 2>&1
          fi

      fi
    done < /backup/.listing

    ### Удаляем локальные временные файлы ###
    sudo rm /backup/index.* >> $log 2>&1
    sudo rm /backup/.listing >> $log 2>&1

    else
        echo "ERROR: $today_backup not found!!!" >> $log 2>&1
fi
stoptime=`date +%s` >> $log 2>&1
duration=`expr ${stoptime} - ${starttime}` >> $log 2>&1

### Пишем в лог о завершении ###

echo "Stop time: $(date)" >> $log 2>&1
echo "Duration is `date +%H:%M:%S -ud @${duration}`" >> $log 2>&1
echo -e "### Stop section BACKUP EVERY WEEK ###" >> $log 2>&1

Сохраните Ctrl+X

 

2.6. Делаем этот файл запускающимся при помощи команды

sudo chmod 755 /backup/backup_ew.sh

 

 

2.7. Осталось добавить автозапуск бэкапа по понедельникам в 4:00. Для этого выполните команду

sudo crontab -e

 

 

и вставьте в конец файла следующую строку

0 4 * * 1 /backup/backup_ew.sh > /dev/null 2>&1 # Run backup every monday at 4:00

Сохраните Ctrl+X

 

Вот собственно и все. Теперь у вас есть бэкапы глубиной в 7 дней на локальном USB устройстве и на удаленном VPNKI Space хранятся еще 4 бэкапа глубиной в месяц.

Остались два вопроса, о которых будет в следующий раз:

  • как восстанавливаться из бэкапа?
  • как сделать ротацию файла лога обоих скриптов /var/log/backup.log ?

 

Если что-то не получилось или что-то неверно описано, то задавайте вопросы на форуме https://vpnki.ru/questions/support-forum/blog-news