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

Linux - Какие каталоги следует исключить при резервном копировании сервера?

Я создаю резервную копию сервера Linux и сохраняю его на другом сервере.

Я начал с простого

rsync -aPh --del server.example.com:/ /mnt/backup

Затем кто-то сказал, что мне не следует делать резервную копию /proc, так как вы не хотите восстанавливать /proc одного сервера на другой.

Что еще я должен / не должен включать?

Например, как насчет /sys?

Обе /proc и /sys - это виртуальные файловые системы, которые отражают состояние системы и позволяют изменять несколько параметров времени выполнения (а иногда и делать более опасные вещи, например, прямую запись в память или на устройство). Вы никогда не должны делать резервные копии или восстанавливать их.

В большинстве современных дистрибутивов /dev динамически создается при загрузке (это файловая система памяти, заполненная udev и друзья). Резервировать его нет смысла, и попытки восстановить бесполезны. Однако, если ваш дистрибутив настроен на использование статического /dev, это не применимо (отметьте /proc/mounts, если /dev это tmpfs это файловая система памяти).

Есть и другие файловые системы, для которых не следует создавать резервные копии; usbfs (обычно в /proc/bus/usb, если вообще установлен), debugfs (должно быть в /sys/kernel/debug если он вообще установлен, но некоторые люди кладут его в другое место; у вас наверное нет этого), devpts (установлен на /dev/pts), Другой tmpfs экземпляры (часто встречаются в /dev/shm, /var/run, /var/lock, и другие места; резервное копирование и восстановление их должно быть безвредным, но бессмысленным, поскольку их содержимое теряется при завершении работы), а также любые удаленные файловые системы или каталоги волшебного автомонтирования (попытка их резервного копирования или восстановления может закончиться катастрофой, так как вы можете закончить резервное копирование / восстановление в другая машина). Вы также должны быть осторожны с /media и /mnt, поскольку там можно найти внешние устройства (например, компакт-диск, который вы забыли в приводе), но вы также могли использовать их специально для монтирования чего-то, для чего нужно создать резервную копию.

Обратите внимание, что кроме в основном безвредных tmpfs экземпляры, сетевые файловые системы / автомонтеры и съемные носители, файловые системы, которые вы не должны резервировать, являются потомками /dev, /proc, или /sys. Если у вас нет сетевых файловых систем (или автомонтирующих устройств) и съемных носителей, за исключением /sys и /proc и перезагрузка после восстановления (чтобы стереть tmpfs экземпляров) должно быть достаточно.

Это действительно зависит от того, как вы собираетесь восстанавливать свою систему. Если вы будете перестраивать, вам понадобятся только файлы конфигурации / данных для ваших служб (например: / etc, / opt, / var, / home)

Если вам нужно полное восстановление системы, вы можете опустить / proc, / boot & / dev. Затем вы можете установить минимальную ОС с загрузочного носителя, а затем восстановить систему с помощью резервной копии.

Конечно, лучшая резервная копия - та, которая была проверено и проверено.

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

Некоторые специальные файлы в / proc и / sys сбивают с толку rsync. Обычно вы также не хотите создавать резервные копии смонтированных сетевых файловых систем. Редкие файлы также могут вызывать проблемы.

Добавьте -x, чтобы ограничить его одной файловой системой. Это позволяет избежать использования всех сетевых файловых систем и / proc и т. Д. Однако затем вам нужно запустить один rsync для каждой смонтированной файловой системы.

Добавьте -S для разумной обработки разреженных файлов.

/ boot, / dev и / proc для резервного копирования совершенно бесполезны - хотя, если вы знаете, что делаете, вы можете сделать резервную копию / boot.

Я бы также не делал резервные копии / lib, / media, / mnt, / sbin, / bin, / srv, / sys или / tmp.

/ usr не является обязательным, в зависимости от того, есть ли у вас что-нибудь стоящее в / usr для резервного копирования. На вашем месте я бы больше всего беспокоился о резервном копировании пользовательских $ HOME, / var и / etc (для файлов конфигурации).

Опять же, на самом деле все зависит от тип резервной копии, которую вы хотите сделать. Это веб-сервер? Это персональный компьютер? Это оболочка-сервер с множеством каталогов в / home?

Вы можете получить полную резервную копию с помощью sfdisk и dd.


Чтобы сделать резервную копию схемы разделов каждого жесткого диска, вы должны использовать sfdisk следующим образом:

sfdisk -d /dev/sda  > parttable_sda.part

Для резервного копирования каждого раздела вы можете использовать dd, например:

dd if=/dev/sda1 of=devsda1.img

куда /dev/sda1 размонтирован, например, при загрузке с live-CD.

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


Затем для восстановления на другом компьютере вы можете:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition

Вместо исключения я обычно создаю резервную копию только того, что хочу. Включая: /home /etc /var (Кроме /var/log)

По сути, псевдофайловые системы (/ proc, / sys, / dev / shm ...) не нуждаются в резервном копировании.

Как указывает это великое сообщество:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot необязательно, см. другие комментарии)

Для справки, моя последняя команда rsync (в Arch с внешним носителем, смонтированным в '/ run / media / fred / INTENSO /' и резервным копированием в папку с именем 'fred'):

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / Фред / INTENSO / фред /.

(исключенные файлы также могут быть указаны в фигурных скобках (--exclude = {/ dev, / proc}) в Bash или в текстовом файле (--exclude-from = 'excude.txt')).

-P: показать прогресс -a: режим архива -z: сжать во время передачи -h: выводить числа в удобочитаемом формате -m: удалить пустые каталоги -x: ограничить одну файловую систему -v: подробный

Я нахожусь на машине Ubuntu 18.04, и я исключил их:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Кроме того, специально для моей установки я исключаю следующее:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk

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

Я использую Ubuntu linux в качестве тестового сервера для разработки веб-сайтов и для размещения вики-документации. Каждую ночь crontab выгружает базу данных MySQL в / var / www, а затем весь / var / www архивируется и реплицируется на сервер резервного копирования. Не идеально, но этого достаточно. В какой-то момент мне пришлось перестроить сервер, и все, что мне действительно не хватало, это файлы конфигурации Apache и Samba.

Я предполагаю, что у вас нет Linux на виртуальной машине. Если это вообще возможно, я бы настоятельно рекомендовал подумать о переходе на виртуализацию. Резервное копирование на уровне виртуальной машины - это совершенно новый уровень согласованности и простоты использования. Существуют бесплатные инструменты виртуализации, поэтому вам не обязательно вкладывать средства в VmWare или другой дорогой инструмент-монстр.

Вопрос: Какие каталоги следует исключить при резервном копировании сервера?

Вот сценарий, который я часто использую, от ноутбука Ubuntu 16.04 LTS до сервера Ubuntu 16.04 LTS. Он четко показывает, какие каталоги следует пропускать при создании полной резервной копии:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Обратите внимание на исключение /mnt - где каждая система Ubuntu имеет постоянный резервный диск, смонтированный для cron-based rsync Самостоятельное резервное копирование 4 раза в день. Эти диски монтируются записями в fstab и присутствуют всегда. Включение их в резервную копию другой системы будет дублированием.

Так же, /media здесь монтируются USB-накопители. Резервное копирование выполняется отдельно.