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.