Назад | Перейти на главную страницу

Повышение эффективности 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 заданий для каждого объекта, который я копирую?

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

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

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

#!/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 дней.

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

Для быстрого и действенного решения, Брент использует финик.

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

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