Регулярно делайте резервные копии раздела LVM

524
frarugi87

У меня есть небольшой домашний сервер (Ubuntu Server 17.10), и я хотел бы настроить для него несколько резервных копий. Мои основные моменты:

  • Сервер имеет два жестких диска. Первый (SSD) разделен на раздел EFI и пространство LVM; внутри есть два тома LVM, и я хочу сделать резервную копию одного из них. Я оставил достаточно места, чтобы сделать том снимка при необходимости. Второй имеет два раздела, и я хочу смонтировать второй, когда это необходимо для хранения резервных копий. Эти два раздела на втором жестком диске не являются частью пространства LVM
  • Сервер не работает 24/7
  • Я хотел бы иметь резервную копию, как это:
    • Каждый день в 1.00 * выполняйте инкрементное резервное копирование; если резервное копирование не выполняется из-за того, что компьютер выключен, выполните его, когда будете готовы
    • Храните не более 5 * ежедневных инкрементных резервных копий. Если однажды резервное копирование не было выполнено из-за того, что компьютер был выключен весь день, всегда должно быть 5 * резервных копий.
    • Каждый месяц должна быть одна полная резервная копия (т.е. не инкрементная) для защиты от повреждения данных.
    • Храните не более 3 * ежемесячных полных резервных копий. Применяется та же концепция, которая описана в пункте 2 (резервные копии 3 *, а не резервные копии последних 3 * месяцев)

Примечание: время и количество резервных копий (отмеченных *) могут быть изменены.

Например, сегодня 14/03. 11/03 ПК был выключен весь день, поэтому в базе данных должно быть:

Инкрементные резервные копии: 14/03, 13/03, 12/03, 10/03, 09/03 (при необходимости можно также выполнить 09/03). Полные резервные копии: 01/03, 01/02, 01/01

Теперь я совершенно новичок в этом, поэтому я начал осматриваться и нашел Чердак, а затем Борга. Но я не могу понять, выполнимо ли то, чего я хочу достичь, с помощью borg или нет, или есть ли более простые способы сделать это, чем использовать эту программу (учитывая, что я нахожусь на LVM, поэтому, возможно, я могу использовать снимок для " отслеживать "изменения или .. что угодно).

Итак ... Может ли то, что я описал, быть реализовано в одном (или двойном) скрипте borg? Вы рекомендуете другие инструменты (или обычную копию)? Или вы думаете, что описанная мною стратегия бесполезна / недостаточна?

Спасибо

ПРИМЕЧАНИЕ: я по ошибке открыл это при сбое сервера, и, поскольку я не мог переместить его, и там не было ни комментариев, ни ответов, я предпочел удалить старый и заново открыть его здесь, чтобы ускорить переход и избежать передачи этой задачи модераторы

РЕДАКТИРОВАТЬ: Может быть, я объяснил не правильно, поэтому я делаю еще несколько строк в этом вопросе.

Мой опыт работы с «инкрементными» снимками происходит из Virtualbox. В этом случае при удалении снимка изменения будут объединены.

Чтобы не писать слишком много, я делаю пример, используя не более трех ежедневных резервных копий.

Предположим, что мы находимся в состоянии

  • Ежедневное резервное копирование 12/03 - полная копия файловой системы 12/03
  • Ежедневное резервное копирование 13/03 - изменения между 12/03 и 13/03
  • Ежедневное резервное копирование 14/03 - изменения между 13/03 и 14/03

Сегодня новый день, поэтому начинается резервное копирование. Но уже есть 3 ежедневные резервные копии. Таким образом, резервная копия 12/03 и 13/03 объединяются (различия 13/03 применяются к базовой версии), и создается новая инкрементная резервная копия. Таким образом вы потеряете разницу между 12 и 13, но резервная копия остается «полной»:

  • Ежедневное резервное копирование 13/03 - полная копия файловой системы 13/03
  • Ежедневное резервное копирование 14/03 - изменения между 13/03 и 14/03
  • Ежедневное резервное копирование 15/03 - изменения между 14/03 и 15/03

Я думаю, что это нормальное поведение чернослива Борга (поправьте меня, если я ошибаюсь, пожалуйста)

Другой вариант (который, на мой взгляд, более желателен) - объединить добавочные резервные копии с ежемесячными. Я имею в виду что-то вроде:

  • Ежемесячное резервное копирование 01/03 - полная копия файловой системы 01/03
  • Ежедневное резервное копирование 12/03 - изменения между 01/03 и 12/03
  • Ежедневное резервное копирование 13/03 - изменения между 12/03 и 13/03
  • Ежедневное резервное копирование 14/03 - изменения между 13/03 и 14/03

При сокращении слияния 12 и 13 объединяются (таким образом, это становится ежедневным резервным копированием 13/03 - изменения между 01/03 и 13/03), и создается новый.

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

  • Ежемесячное резервное копирование 01/03 - полная копия файловой системы 01/03
  • Ежедневное резервное копирование 12/03 - изменения между 01/03 и 12/03
  • Ежедневное резервное копирование 13/03 - изменения между 01/03 и 13/03
  • Ежедневное резервное копирование 14/03 - изменения между 01/03 и 14/03

В этом случае все проще: просто удалите ежедневную резервную копию, не оглядываясь назад.

0
Обычно, когда люди говорят о полном резервном копировании один раз в месяц, а затем о инкрементном резервном копировании каждый день, каждое из них относится к предыдущему дню, поэтому, если вы сохраняете только самые последние 5, после 5-го дня у вас будут резервные копии данных, которые вы не больше резервной копии и потеряет, если вам придется восстановить. Или вы имели в виду, что добавочные резервные копии должны относиться к самой последней полной резервной копии, а не к последней добавочной? psusi 6 лет назад 0
@psusi На данный момент единственными «инкрементными» вещами, с которыми у меня есть небольшой опыт, являются снимки Virtualbox. В любом случае, нет, я не имею в виду способ резервного копирования с потерями. Я редактирую вопрос, чтобы объяснить это frarugi87 6 лет назад 0

1 ответ на вопрос

0
psusi

Вы не можете «объединить» резервные копии. Это не совсем то, что вы просили, но это может соответствовать вашим потребностям. Система резервного копирования, которую я использую, представляет собой cronмногоуровневую работу dumpв виде башни Ханнои. Я полагаю, что вы можете использовать, anacronчтобы убедиться, что запланированные запуски, когда система выключена, выполняются при следующем включении.

#!/bin/bash set -e declare -a LEVELMAP=(1 5 4 5 3 5 4 5 2 5 4 5 3 5 4 5 1 5 4 5 3 5 4 5 2 5 4 5 3 5 4 5) DATE=`date +%-d` LEVEL=$ echo Performing a level $LEVEL dump sync lvcreate -s -n snap devserv2/root -L 1g dump -$LEVEL -quz9 -b 1024 -f /backup/dump.$LEVEL /dev/mapper/devserv2-snap lvremove -f devserv2/snap 

dumpимеет понятие уровней. Дамп уровня 0 содержит все. Дамп уровня 1 содержит все, что изменилось с последнего уровня 0. На уровне 2 есть все, начиная с последнего уровня 0 или уровня 1, в зависимости от того, что является более новым, и так далее. Выполняя перечисленные дампы уровня в каждый день месяца, вы получаете уровень 1 1-го и 17-го числа месяца. Они содержат все, начиная с последнего уровня 0, что я делаю вручную каждые пару месяцев. В остальные дни месяца вы используете уровни 2-5. Это означает, что в любое время у вас есть 3 уровня резервных копий, которые содержат изменения с 1-го или 17-го числа месяца, и часто изменяемые файлы будут иметь несколько версий, к которым вы можете вернуться в каждой из этих резервных копий, в возрасте от 1 до несколько дней.

Похожие вопросы