среда, 27 ноября 2013 г.

Резервное копирование данных Linux



Имеется Linux Ubuntu компьютер, на котором расположен мой веб сайт на Django. Хочется иметь регулярные резервные копии на моем компьютере Windows, не зависимо от моего желания. Лучше один раз сделать автоматическое резервное копирование и спать спокойно.
В предыдущей статье я установил и настроил сервер ssh под Windows winSSHd и сделал авторизацию по ключу. Теперь остался финальный этап – резервное копирование (backup).
1.       Создал скрипт резервного копирования backup_web.sh в редакторе vim:
vi backup_web.sh
добавил содержимое
#!/bin/sh
NOW=$(date +"%Y-%m-%d ")
FILE=backup-www-$NOW.tar.gz
cd /home/django-projects/atlant/
# backup data from database
python manage.py dumpdata > db_atlant_back_server.json
WWW_BACKUP_DIR=/home/atlant/backup
cd $WWW_BACKUP_DIR
# copy apache and project directory
cp -r /etc/apache2 .
cp -r /home/django-projects .
tar zcf $FILE apache2 django-projects
# copy file to computer 192.168.10.222
scp -i /home/atlant/.ssh/sshkey-atlant $WWW_BACKUP_DIR/$FILE atlant@192.168.10.222:d:/arhiv/

сохранил и вышел из редактора vim
:wq

Что делает скрипт резервного копирования?
- выгружает базу данных в файл средствами django
python manage.py dumpdata > db_atlant_back_server.json
- копирует каталоги apache и моего проекта в архивный каталог
cp -r /etc/apache2 .
cp -r /home/django-projects .
- упаковывает в архив
tar zcf $FILE apache2 django-projects
- копирует архив на мой компьютер
scp -i /home/atlant/.ssh/sshkey-atlant $WWW_BACKUP_DIR/$FILE atlant@192.168.10.222:d:/arhiv/

2.       Сделал файл backup_web.sh исполняемым
chmod +x backup_web.sh

3.       Проверил работоспособность скрипта из командной строки
./backup_web.sh

4.       Установил запуск скрипта резервного копирования по расписанию.
За это в Linux отвечает crontab файл. Его я и буду редактировать. Ввожу команду, которая открывает файл в редакторе по умолчанию
crontab –e

Формат файла такой:
минуты     часы      день      месяц   день_недели    команда

Я добавил в конец файла следующую строку (запускает в 15.00 каждый день скрипт backup_web.sh):
0       15      *       *       *       /home/atlant/backup_web.sh

Сохраняю и выхожу в шел оболочку. Проверяю содержимое crontab командой
crontab l

Заметка. crontab доступен для любого пользователя, а не только для админов. Поэтому запускайте задачи резервного копирования по крону не стесняясь, пока к вам не придет письмо с угрозой приостановки вашего виртуального сервера за превышение лимита процессорного времени :)
Теперь жду выполнения скрипта резервного копирования в назначенное время и просматриваю логи командой:
grep CRON /var/log/syslog

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

Комментариев нет:

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