Адміністрація Linux
Існує безліч підходів до створення резервних копій у Linux. Вони варіюються від найпростіших методів, заснованих на виконанні сценаріїв, до використання складних комерційних продуктів.
Питання, що саме вам копіювати і яким чином вирішувати безпосередньо вам в залежності від причини і цілей.
Так як основна ідея в концепції Linux - "все є файл", то процес копіювання та резервування фактично є архівування і розархівування файлів.
Ось деякі каталоги, які мають сенс копіювати:
- /etc Утримує всі ключові конфігураційні файли. До них входять мережеві налаштування, ім'я системи, правила брандмауера, користувачі, групи та інші системні елементи.
- /var Має інформацію, що використовується вашими системними демонами (службами), у тому числі налаштування DNS, DHCP leases, файли поштового буфера, файли HTTP сервера, конфігурації db2 та інші.
- /home Має домашні каталоги за промовчанням для всіх користувачів. Зберігає дані про персональні налаштування, завантажені файли та іншу цінну для ваших користувачів інформацію.
- /root Домашній каталог привілейованого користувача root.
- /opt Каталог для несистемного програмного забезпечення. Сюди встановлюється програмне забезпечення IBM. OpenOffice, JDKs та інше програмне забезпечення за замовчуванням також встановлюється в цей каталог
Інші директорії містять системні файли та встановлені програмні пакети. Що стосується сервера більшість цієї інформації залишається незмінною. Більшість змін відбувається у каталогах /etc та /home. Але для повноти ви можете скопіювати їх.
Якщо головним вашим завданням є зберегти інформацію проданих користувачів та налаштуваннях, то є сенс копіювати каталоги /etc, /var, /home та /root.
Кошти резервного копіювання
tar
tar - це класична команда Unix, яка була перенесена до Linux. tar - це абревіатура tape archive, спочатку ця команда була призначена для архівування файлів на магнітну стрічку. Якщо ви завантажували якийсь Linux код, то, швидше за все, ви вже стикалися з tar файлами. Це файлова команда, яка послідовно компонує файли у безперервний ланцюг.
Завдяки тому, що команда tar може архівувати цілі дерева каталогів, вона особливо добре підходить для створення резервних копій. Відновлення можна виконувати для архівів повністю або для окремих файлів і каталогів. Резервні копії можуть бути розміщені на файлових пристроях або на магнітній стрічці. При відновленні файли можуть бути перенаправлені та розміщені у каталозі (або системі), відмінному від того, з якого були збережені. Команда tar залежить від файлової системи. Вона може використовуватись у файлових системах ext2, ext3, jfs, Reiser і т.д.
Команда tar у використанні дуже схожа на файлову службову програму, таку як PKZip. Ви вказуєте їй вихідний об'єкт, який може бути файлом або пристроєм, а потім перераховуєте файли, які хочете запакувати. По ходу справи ви можете стиснути архів, використовуючи стандартні типи стиснення, або використовувати для цього зовнішню програму стиснення, на ваш вибір. Використовуйте tar -j, щоб стискати або вилучати файли з архіву за допомогою утиліти bzip2, або tar -j, щоб стискати або вилучати файли з архіву за допомогою утиліти gzip.
Для того, щоб використовувати tar створити на стрічковому SCSI-пристрої резервну копію всієї системи, крім каталогу /proc, введіть:
tar -cpf /dev/st0 / --exclude=/proc
У наведеному вище прикладі ключ -c вказує на те, що створюється архів. Ключ -p потрібний для того, щоб зберегти права доступу для файлів, що є необхідною умовою хорошого резервного копіювання. Ключ -f вказує ім'я файлу для архіву. У цьому випадку ми використовуємо накопичувач на магнітній стрічці /dev/st0. Символ / задає, що ми хочемо копіювати. Оскільки в нашому випадку це вся файлова система, то вказано кореневий каталог. При посиланні на каталог (наприкінці якого стоїть символ /) tar автоматично рекурсивно обходить усі підкаталоги. І, нарешті, ми відкидаємо каталог /proc, оскільки він не містить нічого цінного для нас. Якщо резервна копія не вміщається на одній магнітній стрічці, ми додамо ключ -M (тут не показаний) - вказівка на багатотомний архів.
Щоб відновити файл або файли, команда tar використовується з ключем extract (-x):
tar -xpf /dev/st0 -C /
Ключ -f знову посилається на файл, а -p вказує на те, що ми хочемо відновити заархівовані дані, зберігши права доступу. Ключ -x вказує на відновлення архіву. Ключ -C / вказує на те, що відновлення має проводитися в кореневий каталог. За замовчуванням команда tar відновлює архів у той каталог, з якого була запущена. Ключ -C забороняє відновлення поточного каталогу.
Дві інші команди tar, які ви, швидше за все, часто використовуватимете - це ключі -t і -d. Ключ -t виводить вміст архіву. Ключ -d порівнює вміст архіву із поточними файлами в системі.
tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso
Список файлів є простим текстовим файлом, що містить файли і каталоги у вигляді списку. Ось приклад такого файлу:
Зверніть увагу, щокоманда tar-T (або files-from) не сприймає шаблон. Імена файлів мають бути вказані точно. У прикладі вище показаний спосіб послатися на файли окремо. Ви також можете виконати скрипт, який проведе пошук у системі та створить список. Ось приклад такого скрипту: #!/bin/sh cat MyFiles > TempList find /usr/share -iname *.png >> TempList find /tmp -iname *.iso >> TempList tar -cpzMf /dev/st0 -T TempList
Скрипт, наведений вище, копіює весь існуючий список файлів MyFiles в TempList. Потім він виконує дві команди find для пошуку у файловій системі файлів, що задовольняють певну умову, і додає їх до TempList. Перша команда пошуку шукає у каталозі /usr/share усі файли, що закінчуються на .png. Друга команда пошуку шукає у каталозі /tmp усі файли, що закінчуються на .iso. Після створення списку запускається команда tar, яка створить новий архів (create) на файловому пристрої (file device) /dev/st0 (перший носій SCSI на магнітній стрічці), який буде стиснутий у форматі gzip зі збереженням всіх прав доступу для файлів (permissions ). Архів буде розбитий на кілька томів (Multiple volumes). Імена файлів, які мають бути заархівовані, будуть взяті (Taken) з файлу TempList.
Команди dump та restore
Команда dump виконує практично самі функції, як і tar. Однак, вона скоріше призначена для роботи з файловими системами, а не окремими файлами. Цитуючи з посібника до dump: "dump перевірять файли файлової системи ext2 і вирішує, які файли потребують резервного копіювання. Ці файли копіюються для збереження на вказаний диск, магнітну стрічку або інший носій даних. Дамп, розмір якого більший, ніж розмір носія на виході , розбивається на кілька томів.носіїв цей розмір визначається шляхом запису, доки не буде отримано сигнал про переповнення носія."
Програму dump доповнює програма restore, що використовується відновлення збережених файлів з дампа.
Команда restore виконує функцію, зворотну команді dump. Після відновлення всієї файлової системи поверх можна відновлювати інкрементальні резервні копії. З повної або інкрементальної копії можуть бути відновлені і одиночні файли та каталоги з підкаталогами.
Як dump, так і restore можна запустити по мережі, тобто ви можете виконувати архівацію або відновлення з віддалених пристроїв. Команди dump і restore працюють зі стрічковими та файловими пристроями і мають великий набір опцій. Однак ці команди обмежені лише файловими системами ext2 та ext3. Якщо ви працюєте з JFS, Reiser або іншими файловими системами, вам потрібна інша утиліта, наприклад tar.
dump 0f /dev/nst0 /boot dump 0f /dev/nst0 /
У цьому прикладі нашій системі використовуються дві файлові системи. Одна для каталогу /boot, а інша для / - стандартна конфігурація. При виконанні копіювання на кожну їх треба посилатися окремо. /dev/nst0 посилається на перший стрічковий SCSI пристрій, що використовується в режимі без перемотування. Цей режим гарантує, що томи на стрічці слідуватимуть чітко один за одним.
Restore
Для відновлення інформації, збереженої з допомогою команди dump, використовується команда restore. За аналогією з tar команда restore може вивести вміст архіву (-t) і порівняти архіви з поточними файлами (-C). Будьте уважні з командою restore під час відновлення даних. Існує два різні підходи і для того, щоб отримати передбачувані результати, ви повинні вибрати правильний.
Пам'ятайте, що команда dump призначена для роботи з файловою системою, ніж з окремими файлами. Тому існують два різні способи відновлення даних. Щоб відтворити файлову систему, використовуйте ключ -r. Відтворення за задумом повинне проводитися на порожній файловій системі та відновлювати її збережений стан. Перед початком відтворення у вас має бути створена, відформатована та підмонтована файлова система. Не відтворюйте файлову систему, яка містить файли.
Ось приклад повного відтворення з дампа, виконаного на прикладі вище.
restore -rf /dev/nst0
Така команда має бути виконана для кожної файлової системи, яка потребує відновлення. Процедуру можна повторювати, додаючи, при необхідності, інкрементні резервні копії
Якщо вам потрібно працювати з окремими файлами, а не з цілими файловими системами, використовуйте ключ -x. Наприклад, щоб витягти один каталог /etc з архіву на стрічковому накопичувачі, виконайте наступну команду:
restore -xf /dev/nst0 /etc
Інтерактивне відновлення (-i)
Ще одна можливість, закладена в команду restore, – це діалоговий режим. Виконавши команду:
restore -if /dev/nst0
dump чи tar?
Обидві команди, dump та tar, мають своїх шанувальників. У кожної є свої переваги та недоліки. Якщо ви використовуєте файлові системи, відмінні від ext2 або ext3, dump вам не підходить. Однак, в іншому випадку, команда dump дозволить скоротити до мінімуму використання скриптів і, крім того, полегшить відновлення завдяки наявності інтерактивного режиму.
Особисто я віддаю перевагу використати команду tar, оскільки я люблю писати скрипти, тому що вони забезпечують високий рівень контролю.Крім того, існують багатоплатформні засоби для роботи із файлами .tar.
Інші утиліти
В принципі, будь-яку програму, яка може копіювати файли, можна використовувати для виконання того чи іншого виду резервного копіювання на Linux. Деякі люди використовують для створення резервних копій програми cpio та dd. cpio - утиліта архівації, схожа на tar. Вона набагато менш поширена. dd – це утиліта копіювання файлової системи, що створює бінарні копії файлової системи. Утиліту dd можна використовувати для створення образу жорсткого диска на кшталт таких програмних продуктів, як Symantec Ghost. Однак, dd – це не файлова утиліта, тому ви можете відновлювати дані тільки на ідентичні розділи жорсткого диска.
Комерційні програмні продукти для резервного копіювання
Існує кілька комерційних програм резервного копіювання, призначених для Linux. Комерційні продукти зазвичай надають зручний інтерфейс та систему звітності, в той час як, використовуючи утиліти dump і tar, вам доведеться обійтися без цих зручностей. Комерційні програми пропонують широкий вибір функцій. Найбільша користь, яку можуть принести комерційні пакети, – це запропонувати вам готову для використання вбудовану стратегію виконання резервного копіювання. Розробники таких програм свого часу вже пройшли через усі ті помилки, що вам ще потрібно зробити, і плата за їх досвід невелика, в порівнянні з втратою важливих даних.