Сделать crontab более эффективным

Я управляю относительно простым сервером с несколькими веб-сайтами, которые я поддерживаю.

Я установил crontab, чтобы выгружать mysql и архивировать PHP каждый день. Вращаясь за неделю, у меня есть 7 приращений всего, что происходит. Затем я использую тот же crontab, чтобы скопировать их с сервера на другой.

Используя бит MySQL в качестве примера у меня есть

16 3 * * tue mysqldump filename > /var/backups/b-Tuesday/filename.sql  
16 3 * * wed mysqldump filename > /var/backups/b-Wednesday/filename.sql
[etc]

Это повторяется для архивации PHP для каждого из сайтов и снова для части процесса scp.

Есть ли способ иметь ежедневную работу для каждого сайта, которая знает, как сохранить ее в папке резервного копирования соответствующего дня, вместо того, чтобы иметь 7 заданий для каждой резервной копии?

5 ответов

Решение

Как насчет использования функции даты в вызове?

16 3 * * * mysqldump filename > /var/backups/b-`date +%A`/filename.sql

В качестве альтернативы команда logrotate будет обрабатывать сжатие, переименование (с датами), удаление и т. Д. Файлов, которые создаются каждый день. Вы можете вызывать команды dump каждый день, а также вызывать logrotate один раз в день. Файл конфигурации logrotate позволяет указать, какие файлы вращать и что с ними делать.

Попробуйте скрипт оболочки примерно так:

#!/bin/bash
/usr/bin/mysqldump filename | /usr/bin/bzip2 -c > /var/backups/b-`date +%A`/filename.sql.bup.bz2

Это похоже на то, что в моем /etc/cron.daily/, но с изменениями для ваших путей. Я продолжаю иметь в виду сделать больше с этим, но это работает, и резервные копии также хорошо сжаты!

Мой формат даты на самом деле date +%Y%m%d чтобы дать мне больше информации, но я сохраняю резервные копии более 7 дней.

Для быстрого и работоспособного решения Брент выберет дату.

В зависимости от необходимости и желания обеспечить гибкость в будущем, я мог бы рассмотреть возможность создания резервных копий в сценарии оболочки. Таким образом, вы можете использовать одну и ту же кодовую базу для ежедневной, еженедельной, ежечасной или любой другой информации. Вы также получаете выгоду от регистрации ошибок и отчетности (если это имеет значение).

Связанный с касательной, rsnapshot будет управлять почасовыми, ежедневными, еженедельными, ежемесячными резервными чередованиями для вас. Он использует умную комбинацию rsync и жестких ссылок для создания резервных копий.

Другие вопросы по тегам