Linux - Які каталоги слід виключати при створенні резервної копії сервера?


37

Я створюю резервну копію сервера Linux і зберігаю його на іншому сервері.

Я почав з простого

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

Потім хтось зазначив, що я не повинен створювати резервні копії /proc, оскільки ви не хочете відновити /procодин сервер на іншому.

Чи є щось інше, що я повинен / не повинен включати?

Наприклад, про що /sys?

Відповіді:


24

Це дійсно залежить від того, як ви збираєтеся відновити систему. Якщо ви відновите, вам знадобляться лише файли конфігурації / даних для ваших послуг (наприклад: / і т.д., / opt, / var, / home)

Якщо після повного відновлення системи ви можете опустити / proc, / boot & / dev. Тоді ви можете встановити мінімальну ОС із завантажувального носія, а потім відновити систему за допомогою резервної копії.

Звичайно, найкраща резервна копія - тестована та перевірена .

Тож опустіть те, що вам не здається потрібним, спробуйте відновити у вітчизняній машині та переконайтесь, що зможете повернути вашу систему за допомогою цих даних.


5
Не опускайте /boot повністю - можливо, вам доведеться порівнювати стару конфігурацію завантаження з новою конфігурацією завантаження. Просто не забудьте відновити, /boot крім ручного.
— шарлатаний кіхот

5
І також виключіть / sys ... А щоб відновити голий метал, краще також виключити /etc/udev/rules.d/.
— wazoox

2
також втрачено + знайдено, що для файлової системи / mnt та / media не копіює жодного змонтованого пристрою
— леза

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примірників) має бути достатньо.



8

Деякі спеціальні файли в / proc та / sys плутають rsync. Зазвичай, ви також не хочете створювати резервну копію змонтованих мережевих файлових систем. Рідкі файли також можуть спричинити проблеми.

Додати -x, щоб обмежити його однією файловою системою. Це дозволяє уникнути всіх мережевих файлових систем та / proc тощо. Однак вам потрібно запустити одну rsync для кожної встановленої файлової системи.

Додати -S, щоб обробляти розріджені файли розумно.


4

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

Я також не став би резервну копію / lib, / media, / mnt, / sbin, / bin, / srv, / sys або / tmp.

/ usr є необов’язковим, залежно від того, чи є у вас щось у / usr. Якби я був ти, я б найбільше хвилювався щодо резервного копіювання $ HOME, / var та / etc (для файлів конфігурації).

Знову ж таки, це дійсно все залежить від типу резервної копії, яку ви хочете зробити. Це веб-сервер? Це персональний комп’ютер? Це сервер оболонки з тоннами каталогів під / home?


Я хотів би відновити, скориставшись клонуванням резервної копії на нову машину
— Rory

Що ви маєте на увазі під клонуванням? Ви завжди можете просто створити резервну копію необроблених розділів, використовуючи dd та sfdisk sfdisk -d> partition_table.part dd, якщо = / dev / sda1 of = dev.sda1.img (робити це для кожного розділу), то у вашій новій системі: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img of = / dev / sda1 (для кожного розділу знову)
— Michael Pobega

Оскільки система коментарів не любить кодові теги, я опублікував ще одну відповідь.
— Майкл Побега

@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 неможливо, наприклад, із завантажувальним компакт-диском наживо.

(майте на увазі, що вам потрібно буде мати багато вільного місця для написання цього файлу; тому ви можете написати його на зовнішній носій). Зробіть це для кожного розділу, по одному, і створіть резервну копію.


Потім для відновлення на іншому комп’ютері ви можете зробити:

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)


1

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


1

Як вказує ця велика громада:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ завантаження необов'язково див. інші коментарі)

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

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / загублений + знайдений --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / fred / INTENSO / fred /.

(виключені файли також можна вказати фігурними дужками (--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

0

Я, як правило, складаю резервну копію всього в системі, навіть резервні копії речей, які я точно знаю. Простіше налаштувати, і ви можете бути на 100% впевнені, що все, що вам потрібно, буде включено в резервну копію.


1
так, але подальше запитання полягає в тому, що ви віддаляєте від резервної копії як непотрібну?
— Рорі

На що я відповів би: "нічого".
— Максим Мінімус

Правда. Ви виключаєте його з процесу відновлення, а не саму резервну копію. Але ви, мабуть, все-таки хочете залишитись, /procі /devщоб не заплутати мало бідних rsync.
— TJ Crowder

1
@mh, ви б відновили / proc / kcore, що є пам'яттю вихідного сервера? це звучить трохи нерозумно ...
— Рорі

0

Я використовую вікно Linux Ubuntu як тестовий сервер для розробки веб-сайтів та для розміщення вікі документації. Кожної ночі crontab скидає базу даних MySQL у / var / www, а потім всі / var / www завантажуються та реплікуються на резервний сервер. Це не ідеально, але достатньо. Я повинен був відновити сервер в один момент, і все, що я дійсно пропустив, - це конфігураційні файли Apache і Samba.


0

Я б припустив, що у вас немає Linux на віртуальній машині. Якщо це взагалі можливо, я б закликав розглянути можливість переходу до віртуалізації. Резервні копії на рівні vm - це абсолютно новий рівень послідовності та простоти використання. Існують безкоштовні інструменти для віртуалізації, тому вам не обов’язково вкладати кошти у VmWare або інший дорогий інструмент монстра.


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самостійного резервного копіювання на основі хронів 4 рази на день. Ці накопичувачі монтуються записами вfstab та завжди присутні. Включення їх у резервну копію до іншої системи було б дублюючим.

Аналогічно, /mediaтам, де встановлюються USB-накопичувачі. Вони резервні копії окремо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.