Я уверен, что мы столкнулись с невероятно распространенной проблемой: мы делаем ежедневное резервное копирование, в результате чего получаются сжатые архивные файлы, в имени которых есть дата, и мы не хотим хранить их все вечно.
Вот некоторые требования, которые я не считаю слишком уж странными:
- удалить все, кроме последних X резервных копий/дней
- сохраняйте резервные копии воскресенья
- сохраняйте последнюю резервную копию каждого месяца
- предупредить кого-нибудь, если размер последней резервной копии равен 0/больше/меньше последней более чем на 50%
Я пытался гуглить, но нашел только тысячу скриптов, многие из которых с вопиющими проблемами и ошибками. Неужели нет «правильных» решений этой проблемы, которые хорошо протестированы и имеют сообщество? Обречен ли я копировать и вставлять скрипт из SO или SU, который не будет поддерживаться или получать исправления ошибок и однажды, вероятно, съест все наши резервные копии?
решение1
СГФ (Дедушка-Отец-Сын) Метод сохранения, вероятно, является хорошим ответом здесь. Соедините это с некоторыми своевременными crons, такими как упоминания @ivanivan.
По сути, вы делаете резервные копии ежедневно, еженедельно и ежемесячно (Cron будет контролировать, какие именно).
Затем вы можете определить политику хранения.
- Ежедневные резервные копии обычно хранятся не менее 1 недели (иногда 2–3 недели).
- Еженедельные резервные копии обычно хранятся в течение 5 недель (но потенциально 8 недель).
- Ежемесячные резервные копии обычно хранятся в течение 6 или 12 месяцев (в зависимости от годового/полугодового резервного копирования).
- Ежегодное/полугодовое резервное копирование также можно выполнять, но это может быть полезно только для бухгалтерского учета или в случаях, когда необходимо вести журналы.
Затем crons также очистит старые архивы, которые находятся за пределами окна политики.
Как предполагает ivanivan:
Ваша проблема звучит как относительно простой набор скриптов оболочки, и задания cron справятся с этим. Можно предположить, что вместо того, чтобы гуглить скрипт, который подойдет для чьей-то ситуации, вы гуглите, как научиться делать скрипты оболочки.
вам, возможно, захочется изучить скриптинг bash — это отличная вещь для изучения :)