Планирование автоматического резервного копирования в Ubuntu

Скрипт - резервная копия в Linux

Одной из главных задачь системного администратора является постоянная поддержка ПО и копирования данных на случай краха системы. Многие об этом забываю и попадают в ситуации, когда специалистам приходится заново забивать базы данных, а вина то лежит полностью на действиях, а в данном случае в бездействии системщиков. 

Как то в одной из прошлых статей я писал уже об автоматическом резервном копировании файлов и папок в Windows XP. Для этого очень хорошо подошла программа Cobian Backup. С данной программой я работаю уже 2 года, но эта программа подходит только для Windows.

Сейчас для меня стоит задача организовать то же самое в Linux. Специализированных программ для этого искать не стал, а спросил у товарища и он подкинул очень интересный скрипт и рассказал как с ним работать. Давайте по порядку ! 

Задача

Мне необходимо в заданное время, ежедневно делать резервную копию папки в которой содержится база данных предприятия. Получаемая копия будет автоматически архивироваться и ей будет присваиваться индивидуальное название. Для создания архива удобно использовать в названии текущую дату и время создания копии, чтобы потом быстро найти копию за нужный день.

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

Задача ясна и теперь можно переходить к ее реализации.

Для начала создадим пустой файл в папке /home/user, гда user — папка вашего пользователя. Назовем файл скажем backup.sh,  и запишем в него данный код:

#!/bin/bash
#backup.sh
timestamp=`date «+%Y.%m.%d.%H.%M.%S.»`
backupFS=/home/user/folder
backupTO=/home/user/Backup/
#KeepTime=7
if [ -d $backupTO ]; then
find $backupTO -maxdepth 1 -name \*.tar.gz -mtime +${KeepTime} -exec rm -f {} \;
for i in $backupFS
do
j=`expr ${i//\//-}`
tar -zcvf $backupTO/`hostname`.${timestamp}.${j}.tar.gz $i
echo$i is done”
done
else
echo “backup directory is missing…exiting”
exit 1
fi

Основные изменяемые параметры:

  • timestamp — переменная, которой присваивается текущее дата и время (его мы будем успользовать в названии файла);
  • backupFS  — резервную копию этой папки мы будем делать;
  • backupTO — папка в которую будем делать копию;
  • find — утилита поиска файлов, подробней о ней читайте тут.

Остальное можно описать так: программа будет искать в папке /home/user/Backup/ архивы созданные более 7 дней назад и удалит их, далее создастся наша резервная копия. Проверка и удаление старых копий нужна чтобы наш жесткий диск со временем не переполнился копиями. 

Запуск скрипта в нужное время

Итак скрипт у нас есть и он работает. Теперь сделаем, чтобы он запускался в нужное время. У меня компьютер не отключается и я буду делать создание копии утром перед началом работы, скажем в 5:30.

Для планировки задания будем использовать Cron — демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время. (WIKI)

Запускаем терминал и выполняем команду:

# crontab -e

(Важно знать, что под каким пользователем Вы выполните эту команду, под тем пользователем и будет она запускаться)

Перед первым запуском cron може попросить выбрать редактор для редактирования настроек cron, я выбрал nano.

Итак перед вами окно планировщика, в конец я добавил строку такого типа:

30 5 * * 0-7 /home/user/backup.sh

Сохранив файл я получил автоматическое выполнение моего скрипта в 5:30 утра ежедневно (0-7).

Все параметры описаны на английском и закоментированы, зная язык Вы легко настроите планировщик под себя. Вопросы приветствуются! Удачи!

P.S. «Еще одна интересная страница интернета, позволяющая постоить команду find — http://find.unixpin.com/ru/«{jcomments on}{odnaknopka}

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий