Предлагаем Вашему вниманию очень простой скрипт backup.sh, который позволит Вам настроить резервное копирование файлов, а также автоматическое удаление старых файлов бэкапов.

backup.sh:

#!/bin/bash

#Список директорий для резервного копирования

DIRS=»/etc /var/www»

#Текущая дата

NOW=$(date +»%d-%m-%Y»)

#Дата, которая была месяц назад

OLD=$(date -d \’-1 month\’ +»%d-%m-%Y»)

#Директория, хранилище, диск или другое место где будет храниться backup

BACKUP=/backup

#Название файла резервной копии

FILE=»fs-full-$NOW.tar.gz»

#Старый файл резервного копирования, который необходимо удалить

OLD_FILE=$BACKUP/fs-full-$OLD.tar.gz

#Создание архива

/bin/tar -zcvpf $BACKUP/$FILE $DIRS

#Удаление старой копии

rm -f $OLD_FILE

Таким образом используя, month, week, day и операторы сложения «+» и вычитания «» можно настроить политику хранения резервных копий. Например:

date -d \’-1 month\’ +»%d-%m-%Y», возвращаемое значение равно дате месяц назад

date -d \’-2 week\’ +»%d-%m-%Y», дата две недели назад

date -d \’-3 day\’ +»%d-%m-%Y», дата три дня назад

date -d \’+1 day\’ +»%d-%m-%Y», дата которая будет завтра, вряд ли «+» Вам понадобится для резервного копирования, но может пригодится для других целей

Создав такой скрипт, Вы помещаете его в cron на выполнение, чаще всего бэкап выполняется ежедневно ночью:

30 2 * * * /backup.sh

В ходе работы скрипта будет создан файл резервной копии с текущей датой, и удален файл бэкапа, который будет соответствовать дате в параметре OLD_FILE, в котором вы укажете как долго хранить бэкап.