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

37

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

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

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

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

Что-нибудь еще, что я должен / не должен включать?

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

Рори
источник

Ответы:

24

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

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

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

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

Wayne
источник
5
Не опускайте /bootполностью - вам может потребоваться сравнить старую конфигурацию загрузки с новой конфигурацией загрузки. Только убедитесь, что не восстановить, /boot кроме как вручную.
Квик-кихот
5
И исключить / sys также ... И чтобы восстановить голое железо, лучше исключить также /etc/udev/rules.d/.
wazoox
2
также потерял + обнаружил, что для файловой системы, / mnt и / media не копировать ни одно подключенное устройство
blade
29

И то, /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экземпляры) должно быть достаточно.

CesarB
источник
8

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

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

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

pjc50
источник
4

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

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

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

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

Майкл Побега
источник
Я хотел бы восстановить с помощью клонирования резервной копии на новую машину
Рори
Что вы подразумеваете под "клонированием"? Вы всегда можете просто сделать резервную копию необработанных разделов, используя dd и sfdisk sfdisk -d> partition_table.part dd if = / dev / sda1 of = dev.sda1.img (сделайте это для каждого раздела), а затем на новой системе: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img of = / dev / sda1 (опять же для каждого раздела)
Майкл Побега
Поскольку система комментариев не любит теги кода, я разместил еще один ответ.
Майкл Побега
@MichaelPobega Если вы делаете резервные копии сырых разделов, как вы говорите, вам придется скопировать весь размер диска. Зачем копировать 512 ГБ, если вы использовали только 80 ГБ вашего диска? С rsyncвами не только скопировать только то, что вы использовали, но и включить синхронизацию в будущем, так что вы можете безопасно запустить для нее задание cron.
Макс
Возвращаясь к этому спустя годы, мой десятилетний опыт научил меня, что вы правы @Max.
Майкл Побега
3

Вы можете добиться полного резервного копирования, используя 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
Майкл Побега
источник
3
ВНИМАНИЕ: делайте это только в том случае, если раздел отключен или подключен только для чтения. Извлечение необработанного содержимого раздела во время его записи может привести к появлению сильно несовместимой файловой системы в резервной копии (поскольку блоки в начале файловой системы копируются «раньше», чем блоки в конце, а алгоритмы файловой системы не ожидайте этого; вы можете избежать этой проблемы, если сможете каким-то образом сделать атомарный снимок файловой системы). fsck вам не поможет, поскольку его алгоритмы также зависят от порядка записи файловой системы на диск.
CesarB
дд это путь. Загрузка на LiveCD, конечно. И важно, чтобы dd if=/dev/urandom of=/dev/sdb bs=512 count=12стереть MBR и таблицу разделов целевого диска.
SDsolar
2

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

DennyHalim.com
источник
1

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

sendmoreinfo
источник
1

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

/ 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: многословно

Фред Кристоф
источник
1

Я нахожусь на машине 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
user2724383
источник
0

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

Максимус Минимус
источник
1
да, но следующий вопрос: что вы удаляете из резервной копии как ненужную?
Рори
На что я бы ответил: «ничего».
Максимус Минимус
Правда. Вы исключаете его из процесса восстановления, а не из самой резервной копии. Но вы, вероятно, все еще хотите уйти, /procи /devчтобы не путать бедных мало rsync.
TJ Crowder
1
@mh, вы бы восстановили / proc / kcore, который является памятью исходного сервера? это звучит немного глупо ...
Рори
0

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

Nic
источник
0

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

Gnudiff
источник
0

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

Вот сценарий, который я часто использую, от ноутбука 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 имеет накопитель для резервного копирования на полный рабочий день, монтируемый для rsyncсамостоятельного резервного копирования на основе cron 4 раза в день. Эти диски установлены в записи fstabи всегда присутствуют. Включить их в резервную копию в другую систему было бы дубликатом.

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

SDsolar
источник