У цьому розділі ви дізнаєтесь, як створювати резервні копії та відновлювати дані за допомогою Linux.
Цілі: у цьому розділі майбутні адміністратори Linux дізнаються, як:
використовувати команди tar і cpio, для створення резервної копії; перевіряти резервні копії та відновлювати дані; архівувати або розпакувати резервні копії.
резервне копіювання, відновлення, стиснення
Знання: Складність:
Час для читання: 40 хвилин
Примітка
У цій главі командні структури використовують «пристрій» для визначення як цільового розташування для резервного копіювання, так і вихідного розташування під час відновлення. Пристроєм може бути як зовнішній носій, так і локальний файл. Ви повинні відчути це, коли розгортається розділ, але ви завжди можете повернутися до цієї примітки для роз’яснення, якщо вам потрібно.
Резервне копіювання задовольнить необхідність збереження та відновлення даних надійним і ефективним способом.
Резервне копіювання дозволяє захистити себе від наступного:
Знищення: добровільне чи мимовільне. Людські або технічні. Вірус, ...
Видалення: добровільне чи мимовільне. Людські або технічні. Вірус, ...
Цілісність: дані стають непридатними для використання.
Жодна система не є безпомилковою, жодна людина не є безпомилковою, тому, щоб уникнути втрати даних, необхідно створити їх резервну копію, щоб мати можливість їх відновити.
Носій резервного копіювання слід зберігати в іншій кімнаті (або будівлі), ніж сервер, щоб катастрофа не знищила сервер і резервні копії.
Крім того, адміністратор повинен регулярно перевіряти, чи не пошкоджені носії резервних копій.
Залежно від доступних утиліт, можна буде виконати кілька типів відновлення.
Повне відновлення: дерева, ...
Вибіркове відновлення: частина дерева, файли, ...
Можна відновити всю резервну копію, але також можна відновити лише її частину. Однак під час відновлення каталогу файли, створені після резервного копіювання, не видаляються.
Порада
Щоб відновити каталог, яким він був на момент створення резервної копії, необхідно повністю видалити його вміст перед початком відновлення.
Використання угоди про найменування дає змогу швидко визначити вміст файлу резервної копії та таким чином уникнути небезпечне відновлення.
назва довідника;
використана утиліта;
використовувані опції;
дата.
Порада
Ім’я резервної копії має бути чітким.
Важливо
Поняття розширення в Linux не існує. Іншими словами, ми використовуємо розширення тут для людини-оператора. Якщо системний адміністратор бачить, наприклад, розширення файлу .tar.gz або .tgz, то він знає, як поводитися з файлом.
Команда tar дозволяє зберігати на кількох послідовних носіях (багатотомні параметри).
Є можливість розпакувати всю або частину резервної копії.
tar неявно виконує резервне копіювання у відносному режимі, навіть якщо шлях до інформації для резервного копіювання вказано в абсолютному режимі. Проте резервне копіювання та відновлення в абсолютному режимі можливі.
Перед відновленням важливо подумати та визначити найбільш відповідний метод, щоб уникнути помилок.
Відновлення зазвичай виконуються після того, як виникла проблема, яку необхідно швидко вирішити. Неякісна реставрація може в деяких випадках погіршити ситуацію.
Стандартною утилітою для створення резервних копій у системах UNIX є команда tar. Ці резервні копії можна стискати за допомогою bzip2, xz, lzip, lzma, lzop, gzip, compress або zstd.
tar дозволяє видобувати один файл або каталог із резервної копії, переглядати його вміст або перевіряти його цілісність.
Створення нестиснутої резервної копії в абсолютному режимі виконується за допомогою опції cvfP:
$ tar c[vf]P [device] [file(s)]
Приклад:
[root]# tar cvfP /backups/home.133.P.tar /home/
Параметр
Опис
P
Створення резервної копії в абсолютному режимі.
Увага
За допомогою клавіші P шлях до файлів для резервного копіювання має бути введений як абсолютний. Якщо дві умови (ключ P і шлях абсолютний) не вказано, резервне копіювання виконується у відносному режимі.
Створення стисненої резервної копії за допомогою gzip¶
Створення стисненої резервної копії за допомогою gzip виконується за допомогою опції cvfz:
$ tar cvzf backup.tar.gz dirname/
Параметр
Опис
z
Стискання резервної копії в gzip.
Примітка
Розширення .tgz є еквівалентним розширенням .tar.gz.
Примітка
Збереження опцій cvf (tvf або xvf) незмінними для всіх операцій резервного копіювання та просте додавання опції стиснення в кінці робить команду легшою для розуміння (наприклад, cvfz або cvfj тощо).
Створення стисненої резервної копії за допомогою bzip¶
Створення стисненої резервної копії за допомогою bzip виконується за допомогою опції cvfj:
$ tar cvfj backup.tar.bz2 dirname/
Параметр
Опис
j
Стискає резервну копію в bzip2.
Примітка
Розширення .tbz і .tb2 еквівалентні розширенням .tar.bz2.
Стиснення та, як наслідок, декомпресія впливатимуть на споживання ресурсів (час і використання ЦП).
Ось рейтинг стиснення набору текстових файлів від найменшого до найефективнішого:
compress (.tar.Z)
gzip (.tar.gz)
bzip2 (.tar.bz2)
lzip (.tar.lz)
xz (.tar.xz)
Додавання файлу або каталогу до наявної резервної копії¶
До існуючої резервної копії можна додати один або кілька елементів.
tar {r|A}[key(s)] [device] [file(s)]
Щоб додати /etc/passwd до резервної копії /backups/home.133.tar:
[root]# tar rvf /backups/home.133.tar /etc/passwd
Додавання каталогу аналогічно. Тут додайте dirtoadd до backup_name.tar:
$ tar rvf backup_name.tar dirtoadd
Параметр
Опис
r
Додає один або кілька файлів наприкінці резервної копії носія з прямим доступом (жорсткий диск).
A
Додає один або кілька файлів наприкінці резервного копіювання на носій із послідовним доступом (стрічка).
Важливо
Неможливо додати файли або папки до стиснутої резервної копії.
$ tar rvfz backup.tgz filetoadd
tar: Cannot update compressed archives
Try `tar --help' or `tar --usage' for more information.
Важливо
Якщо резервне копіювання було виконано у відносному режимі, додайте файли у відносному режимі. Якщо резервне копіювання було зроблено в абсолютному режимі, додайте файли в абсолютному режимі.
Змішування режимів може викликати проблеми при відновленні.
Перегляд вмісту резервної копії без її вилучення можливий.
tar t[key(s)] [device]
Параметр
Опис
t
Відображає вміст резервної копії (стисненої чи ні).
Приклади:
$ tar tvf backup.tar
$ tar tvfz backup.tar.gz
$ tar tvfj backup.tar.bz2
Коли кількість файлів у резервній копії стає великою, можна передати результат команди tar на pager (більше, менше, більшість тощо):
$ tar tvf backup.tar | less
Порада
Щоб отримати список або отримати вміст резервної копії, немає необхідності згадувати алгоритм стиснення, який використовувався під час створення резервної копії. Тобто tar tvf еквівалентний tar tvfj для читання вмісту, а tar xvf еквівалентний tar xvfj для вилучення.
Цілісність резервної копії можна перевірити за допомогою опції W під час її створення:
$ tar cvfW file_name.tar dir/
Цілісність резервної копії можна перевірити за допомогою опції d після її створення:
$ tar vfd file_name.tar dir/
Порада
Додавши другий v до попереднього ключа, ви отримаєте список заархівованих файлів, а також відмінності між заархівованими файлами та файлами, присутніми у файловій системі.
Розпакування (untar) резервної копії *.tar виконується за допомогою опції xvf:
Розпакування файлу etc/exports із резервної копії /savings/etc.133.tar у каталог etc активного каталогу:
$ tar xvf /backups/etc.133.tar etc/exports
Розпакування всіх файлів зі стисненої резервної копії /backups/home.133.tar.bz2 в активний каталог:
[root]# tar xvfj /backups/home.133.tar.bz2
Розпакування усіх файлів з резервної копії /backups/etc.133.P.tar до оригінального каталогу:
$ tar xvfP /backups/etc.133.P.tar
Важливо
Перейдіть в потрібне місце.
Перевірте вміст резервної копії.
Параметр
Опис
x
Витягує файли з резервної копії, стиснуті чи ні.
Видобування резервної копії tar-gzip (*.tar.gz) виконується за допомогою опції xvfz:
$ tar xvfz backup.tar.gz
Видобування резервної копії tar-bzip (*.tar.bz2) виконується за допомогою опції xvfj:
$ tar xvfj backup.tar.bz2
Порада
Щоб видобути або отримати список вмісту резервної копії, немає необхідності згадувати алгоритм стиснення, який використовується для створення резервної копії. Тобто tar xvf еквівалентний tar xvfj, щоб витягнути вміст, а tar tvf еквівалентний tar tvfj, щоб отримати список.
Увага
Щоб відновити файли у вихідному каталозі (опція Ptar xvf), ви повинні створити резервну копію з абсолютним шляхом. Тобто за допомогою опцій Ptar cvf.
Щоб отримати певний файл із резервної копії tar, укажіть назву цього файлу в кінці команди tar xvf.
$ tar xvf backup.tar /path/to/file
Попередня команда витягує лише файл /path/to/file із резервної копії backup.tar. Цей файл буде відновлено до каталогу /path/to/, створеного або вже наявного в активному каталозі.
$ tar xvfz backup.tar.gz /path/to/file
$ tar xvfj backup.tar.bz2 /path/to/file
Команда cpio дозволяє зберігати на кількох послідовних носіях, не вказуючи жодних параметрів.
Є можливість розпакувати всю або частину резервної копії.
Немає можливості, на відміну від команди tar, для резервного копіювання та стиснення одночасно. Отже, це робиться в два етапи: резервне копіювання та стиснення.
Щоб виконати резервне копіювання за допомогою cpio, вам потрібно вказати список файлів для резервного копіювання.
Цей список надається за допомогою команд find, ls або cat.
find : переглянути дерево, рекурсивне чи ні;
ls : перелічує каталог, рекурсивний чи ні;
cat : читає файл, що містить дерева або файли, які потрібно зберегти.
Примітка
ls не можна використовувати з -l (подробиці) або -R (рекурсивний).
Для цього потрібен простий список імен.
Створення резервної копії за допомогою команди cpio¶
На відміну від команди tar, немає можливості зберігати та стискати одночасно. Отже, це робиться в два етапи: збереження та стиснення.
Синтаксис першого методу легше зрозуміти і запам'ятати, оскільки він складається з двох кроків.
Для першого методу файл резервної копії автоматично перейменовується утилітою gzip, яка додає .gz у кінець імені файлу. Так само утиліта bzip2 автоматично додає .bz2.
Відновлює лише ті файли, ім'я яких міститься у файлі.
--make-directories or -d
Відновлює відсутню структуру дерева.
-u
Замінює всі файли, навіть якщо вони існують.
--no-absolute-filenames
Дозволяє відновити резервну копію, зроблену в абсолютному режимі, у відносний спосіб.
Важливо
За замовчуванням, під час відновлення, файли на диску, дата останньої зміни яких є новішою або дорівнює даті резервної копії, не відновлюються (щоб уникнути перезапису останньої інформації старішою).
Параметр u, з іншого боку, дозволяє відновити старіші версії файлів.
Приклади:
Повне відновлення абсолютної резервної копії
$ cpio –ivF home.A.cpio
Абсолютне відновлення на існуючій структурі дерева
Параметр u дозволяє перезаписувати існуючі файли в тому місці, де відбувається відновлення.
$ cpio –iuvF home.A.cpio
Відновлення абсолютної резервної копії у відносному режимі
Довгий параметр no-absolute-filenames дозволяє відновлення у відносному режимі. Насправді / на початку шляху буде видалено.
$ cpio --no-absolute-filenames -divuF home.A.cpio
Порада
Створення каталогів, можливо, необхідне, тому використовується опція d
Відновлення відносної резервної копії
$ cpio –iv <etc.cpio
Повне відновлення файлу або каталогу
Відновлення певного файлу або каталогу вимагає створення файлу списку, який потім потрібно видалити.