Я создаю резервную копию сервера 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. Затем вы можете установить минимальную ОС с загрузочного носителя, а затем восстановить систему с помощью резервной копии.
Конечно, лучшая резервная копия - та, которая была проверено и проверено.
Так что опустите то, что, по вашему мнению, вам не нужно, попробуйте восстановить на виртуальной машине и убедитесь, что вы можете вернуть свою систему, используя эти данные.
Видеть Дао резервного копирования, глава 1.
Некоторые специальные файлы в / 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-накопители. Резервное копирование выполняется отдельно.