В предыдущих статьях «Резервное копирование сайта с удаленного сервера по расписанию. Часть 1. Резервное копирование базы» Резервное копирование сайта с удаленного сервера по расписанию. Часть 2. Резервное копирование файлов по FTP были рассмотрены способы резервного копирования сайта. Теперь же рассмотрим, как автоматизировать этот процесс с помощью утилиты cron.

1. Резервное копирование базы
2. Резервное копирование файлов по FTP
3. Автоматизация запуска с помощью cron

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

Демон cron запускается при загрузке системы, он осуществляет проверку очереди заданий at и заданий, прописанных пользователями в crontab. cron проверяет каталог /var/spool/cron/ на наличие файлов crontab. Для каждого пользователя из /etc/passwd может быть только один соотвествующий ему файл crontab.

Редактирование списка заданий для текущего пользователя выглядит так:

crontab -e

Чтобы отредактировать список другого пользователя, следует задать ключ -u и имя пользователя (например root)

sudo crontab -u root -e

Просмотр файла crontab пользователя «username»

crontab -u username -l

Удаление файла crontab пользователя «username»

crontab -u username -r

Редактирование файла crontab пользователя «username» с использованием редактора, заданного переменной окружения VISUAL или EDITOR

crontab -u username -e

Формат записи в строке

Каждая команда в пользовательском файле crontab занимает одну строку и состоит из шести полей.
Общий формат команды:

минута час день_месяца месяц день_недели команда

Допустимые значения:

минута от 0 до 59
час от 0 до 23
день_месяца от 1 до 31
месяц от 1 до 12 (либо три буквы из названия месяца, регистр не имеет значения от jan до dec)
день_недели от 0 до 6 (0 это воскресенье, можно писать от sun до sat)

Дни недели и месяца в трех буквенном варианте:

sun mon tue wed thu fri sat
jan feb mar apr may jun jul aug sep oct nov dec

Дополнительные переменные cron

@reboot Запуск при загрузке
@yearly Раз в год ( 0 0 1 1 * )
@annually Тоже что и @yearly
@monthly Раз в месяц ( 0 0 1 * * )
@weekly Раз в неделю ( 0 0 * * 0 )
@daily Раз в день ( 0 0 * * * )
@midnight В полночь (00:00)
@hourly Каждый час ( 0 * * * *)

Каждое из полей даты и времени может быть обозначено символом * ,будет соответствовать любому возможному значению. Для этих полей можно указывать диапазоны значений, разделенных дефисом, например:

Печать HELLO в 5:00 на 4,5,6,7,8,9,10 дни января, февраля, марта и апреля

* 5 4-10 0-3 * echo "HELLO"

Печать HELLO каждый четный час, каждую субботу (три способа):

* */2 * * sat echo "HELLO"
* 0,2,4,6,8,10,12,14,16,18,20,22 * * sat echo "HELLO"
* 0-23/2 * * sat echo "HELLO"

Для отладки задания cron, можно перенаправить результат в файл:

0-59 * * * * /home/user/userscript 2>/tmp/cron.log

Таким образом, исходя из предыдущих статей, наш список заданий сron примет вид:

0 0 * * wed,sat  /usr/bin/curl 'http://mydomain/filepath/backup.php' > /tmp/db-backup.log > /dev/null 2>&1
0 1 * * wed,sat /etc/init.d/rsync_yourdomain

То есть, в полночь каждой среды и субботы будет удаленно запускаться скрипт бекапа базы, а затем через час, в час ночи, будут синхронизироваться файлы по FTP.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *