Функція знімка файлової системи Btrfs використовує принцип копіювання на запис (CoW). Отже, це не займає багато місця на диску, і ви можете миттєво робити знімки підтому.
Файлова система Btrfs підтримує 2 типи знімків.
- Знімки, що можна записати: Якщо ви зробите знімок для запису, ви можете змінити файли / каталоги цього знімка пізніше. Це тип знімка за замовчуванням файлової системи Btrfs.
- Знімки лише для читання: Якщо ви зробите знімок лише для читання, пізніше ви не зможете змінити файли / каталоги цього знімка.
Ця стаття покаже вам, як робити знімки ваших підтомів файлової системи Btrfs, доступні лише для читання. Я також покажу вам, як оновити знімок для запису та відновити файли зі знімка. Я також покажу вам, як видалити знімок. Отже, давайте почнемо.
Передумови
Щоб спробувати приклади цієї статті,
- На вашому комп’ютері повинна бути встановлена файлова система Btrfs.
- Потрібно мати жорсткий диск або SSD з принаймні 1 вільним розділом (будь-якого розміру).
У мене жорсткий диск на 20 Гб sdb на моїй машині Ubuntu. Я створив 2 розділи sdb1 і sdb2 на цьому жорсткому диску. Я буду використовувати розділ sdb1 у цій статті.
$ sudo lsblk -e7
Ваш жорсткий диск або SSD може мати інше ім'я, ніж моє, так само як і розділи. Тож переконайтеся, що відтепер їх замінюєте на свої.
Якщо вам потрібна допомога щодо встановлення файлової системи Btrfs на Ubuntu, перегляньте мою статтю Встановіть та використовуйте Btrfs на Ubuntu 20.04 LTS.
Якщо вам потрібна допомога щодо встановлення файлової системи Btrfs на Fedora, перегляньте мою статтю Встановіть та використовуйте Btrfs на Fedora 33.
Створення файлової системи Btrfs
Щоб експериментувати з підтомами Btrfs, потрібно створити файлову систему Btrfs.
Для створення файлової системи Btrfs з міткою даних на sdb1 розділу, виконайте таку команду:
$ sudo mkfs.btrfs -L data / dev / sdb1
Слід створити файлову систему Btrfs.
Створіть каталог / дані з наступною командою:
$ sudo mkdir -v / data
Для монтування файлової системи Btrfs, створеної на sdb1 розділ у / дані каталог, запустіть таку команду:
$ sudo mount / dev / sdb1 / data
Файлову систему Btrfs слід монтувати, як ви можете бачити на скріншоті нижче.
$ df -h / дані
Підготовка файлової системи Btrfs до знімків
У Btrfs ви можете робити знімки лише підтомів Btrfs. Основним коренем файлової системи Btrfs також є субтом. Отже, ви можете взяти резервну копію всієї файлової системи Btrfs, а також певних підтомів.
Цей розділ створить підтомник Btrfs / data / projects / web1 і створіть необхідні файли для наступних розділів цієї статті нижче. Я також буду створювати каталог, де ви зможете зберігати свої знімки. У наступних розділах я покажу вам, як робити знімки (доступні для запису та лише для читання), оновлювати знімок, що можна записати, та відновити файли зі знімка. Отже, давайте почнемо.
Спочатку створіть новий каталог / дані / проекти наступним чином:
$ sudo mkdir -v / data / projects
Створіть новий підтом web1 в / дані / проекти каталог наступним чином:
$ sudo btrfs підтомник create / data / projects / web1
Створіть новий файл індекс.html в / data / projects / web1 підтоми наступним чином:
$ sudo nano / data / projects / web1 / index.html
Введіть наступні рядки кодів у індекс.html файл.
Привіт Світ 4
Закінчивши, натисніть
Створіть новий файл стиль.css в / data / projects / web1 підтоми наступним чином:
$ sudo nano / data / projects / web1 / style.css
Введіть наступні рядки кодів у стиль.css файл.
h1колір: зелений;
Закінчивши, натисніть
Тепер, / data / projects / web1 підтомник має індекс.html і стиль.css файл.
$ ls -lh / data / projects / web1
Я хочу зберегти всі знімки цієї файлової системи Btrfs у / дані /.знімки каталог.
Створіть / дані /.знімки каталог з наступною командою:
$ sudo mkdir -v / data /.знімки
Робіть знімки підтому
Зробити знімок / data / projects / web1 субтом в / дані /.знімки / web1-2020-12-25 каталог (буде створений автоматично), запустіть таку команду:
Знімок підтома $ sudo btrfs / data / projects / web1 / data /.знімки / web1-2020-12-25
Знімок / data / projects / web1 каталог повинен бути створений на / дані /.знімки / web1-2020-12-25 каталог.
Як ви можете бачити на скріншоті нижче, новий підтом .знімки / web1-2020-12-25 створюється. Знімок фактично є підтомом.
$ sudo btrfs список / дані підтомів
Ви можете побачити більше інформації про створений знімок у / дані /.знімки / web1-2020-12-25 каталог наступним чином:
$ sudo btrfs підтомник show / data /.знімки / web1-2020-12-25
Як бачите, усі файли, що знаходяться в / data / projects / web1 підтоми знаходяться в / дані /.знімки / web1-2020-12-25 знімок.
$ дерево -a / дані
Відновлення файлів зі знімків
У цьому розділі я збираюся показати вам, як відновити файли зі знімків Btrfs.
Спочатку я покажу вам, як відновити окремий файл зі знімка.
Відкрийте / data / projects / web1 / index.html файл у текстовому редакторі nano таким чином:
$ sudo nano / data / projects / web1 / index.html
Внесіть потрібні зміни.
Закінчивши, натисніть
Як бачите, головне індекс.html файл відрізняється від файлу індекс.html файл у знімку.
$ cat / data / projects / web1 / index.html$ cat / дані /.знімки / web1-2020-12-25 / index.html
Ми внесли зміни до основного індекс.html файл є небажаним, і ми хочемо відновити файл індекс.html файл зі знімка.
Ви можете відновити індекс.html файл зі знімка таким чином:
$ sudo cp -v / data /.знімки / web1-2020-12-25 / index.html / data / projects / web1 / index.html
Як бачите, індекс.html файл відновлюється зі знімка.
$ cat / data / projects / web1 / index.html$ cat / дані /.знімки / web1-2020-12-25 / index.html
Тепер давайте подивимося, як відновити всі файли / каталоги зі знімка.
Видаліть усі файли з / data / projects / web1 знімок наступним чином:
$ sudo rm -rv / data / projects / web1 / *
Щоб відновити всі файли / каталоги зі знімка, виконайте таку команду:
$ sudo rsync -avz / data /.знімки / web1-2020-12-25 / / data / projects / web1 /
Як бачите, файли / каталоги відновлюються зі знімка.
$ ls -lh / data / projects / web1
Нарешті, давайте подивимося, як відновити файли / каталоги зі знімка в дзеркальному режимі. У дзеркальному режимі файли / каталоги підтому будуть такими ж, як на знімку. Якщо в підтоміку є файли / каталоги, які недоступні на знімку, їх буде видалено.
Давайте створимо новий файл у підтомі, щоб відрізнити дерево файлів від знімка.
Створити ЧИТАТИ.txt файл у / data / projects / web1 підтоми наступним чином:
$ echo "привіт світ 5" | sudo tee / data / projects / web1 / README.txt
Як бачите, дерево файлів / data / projects / web1 підтомник відрізняється від / дані /.знімки / web1-2020-12-25 знімок.
$ дерево -a / дані
Щоб відновити файли / каталоги з / дані /.знімки / web1-2020-12-25 знімок до / data / projects / web1 підтомник у дзеркальному режимі, виконайте таку команду:
$ sudo rsync -avz --delete / data /.знімки / web1-2020-12-25 / / data / projects / web1 /
Всі файли / каталоги / data / projects / web1 підтомник слід відновити (у дзеркальному режимі) з / дані /.знімки / web1-2020-12-25 знімок.
Дерево файлів / data / projects / web1 субтом і / дані /.знімки / web1-2020-12-25 знімок повинен бути однаковим.
Як бачите, індекс.файл HTML і стиль.css вміст файлу однаковий у файлі / data / projects / web1 субтом і / дані /.знімки / web1-2020-12-25 знімок.
Зміст індекс.html і стиль.css файл у / data / projects / web1 субтом.
$ cat / data / projects / web1 / index.html$ cat / data / projects / web1 / style.css
Зміст індекс.html і стиль.css файл у / дані /.знімки / web1-2020-12-25 знімок.
$ cat / data / projects / web1 / index.html$ cat / data / projects / web1 / style.css
Оновлення знімка
За замовчуванням файлова система Btrfs робить знімки, доступні для запису. Знімок Btrfs схожий на субтом. Отже, ви можете змінювати / оновлювати файли / каталоги знімкового знімка, який можна записати.
Давайте оновимо індекс.html файл у / data / projects / web1 субтом.
Спочатку відкрийте індекс.html файл із / data / projects / web1 підтоми з нано текстовий редактор наступним чином:
$ sudo nano / data / projects / web1 / index.html
Внесіть потрібні зміни. Закінчивши, натисніть
Як бачите, індекс.html файл / data / projects / web1 підтомник відрізняється від / дані /.знімки / web1-2020-12-25 знімок.
$ cat / data / projects / web1 / index.html$ cat / дані /.знімки / web1-2020-12-25 / index.html
Ви хочете зберегти індекс.html файл / data / projects / web1 субтом.
Щоб оновити індекс.html файл у / дані /.знімки / web1-2020-12-25 знімок, виконайте таку команду:
$ sudo cp -v / data / projects / web1 / index.html / data /.знімки / web1-2020-12-25 / index.html
Як бачите, індекс.html файл / дані /.знімки / web1-2020-12-25 знімок оновлено.
Оновити знімок так само просто, як і копіювати нові файли на знімок.
Робіть знімки підтому лише для читання
Іноді ви не хочете, щоб зроблені вами знімки будь-яким чином оновлювались. У такому випадку ви можете створити знімки лише для читання.
Наприклад, для створення знімка лише для читання / дані /.знімки / web1-2020-12-26 з / data / projects / web1 підтомі, виконайте таку команду:
Знімок підтома $ sudo btrfs -r / data / projects / web1 / data /.знімки / web1-2020-12-26
Як бачите, новий підтом .знімки / web1-2020-12-26 створюється.
$ sudo btrfs список / дані підтомів
Як бачите, знімок / дані /.знімки / web1-2020-12-26 лише для читання.
$ sudo btrfs підтомник show / data /.знімки / web1-2020-12-26
Давайте оновимо індекс.html файл із / data / projects / web1 субтом.
Для цього відкрийте індекс.html файл із / data / projects / web1 підтоми з нано текстовий редактор наступним чином:
$ sudo nano / data / projects / web1 / index.html
Внесіть потрібні зміни. Закінчивши, натисніть
Як бачите, індекс.html в / data / projects / web1 підтомник відрізняється від / дані /.знімки / web1-2020-12-26 знімок.
$ cat / data / projects / web1 / index.html$ cat / дані /.знімки / web1-2020-12-26 / index.html
Спробуємо оновити індекс.html файл у / дані /.знімки / web1-2020-12-26 знімок.
$ sudo cp -v / data / projects / web1 / index.html / data /.знімки / web1-2020-12-26 / index.html
Як бачите, ви не можете оновити індекс.html файл / дані /.знімки / web1-2020-12-26 знімок, тому що знімок доступний лише для читання.
Видалення знімка
Я вже говорив вам раніше, що знімок Btrfs схожий на підтом. Отже, ви можете видалити знімок Btrfs так само, як видалити підтом Btrfs. Та сама команда.
Ось як дерево файлів файлової системи Btrfs змонтовано на / дані каталог виглядає на даний момент.
$ дерево -a / дані
Давайте видалимо .знімки / web1-2020-12-25 знімок.
$ sudo btrfs список / дані підтомів
Щоб видалити / дані /.знімки / web1-2020-12-25 знімок, виконайте таку команду:
$ sudo btrfs subvolume delete / data /.знімки / web1-2020-12-25
Як бачите, знімок .знімки / web1-2020-12-25 вже немає.
$ sudo btrfs список / дані підтомів
Як бачите, файли / каталоги / дані /.знімки / web1-2020-12-25 знімок також видаляється.
$ дерево -a / дані
Висновок
У цій статті показано, як робити знімки ваших підтомів файлової системи Btrfs, доступні для читання та лише для читання. Я також показав вам, як оновити знімок, який можна записати, та відновити файли зі знімка. Я також показав вам, як видалити знімок Btrfs. Ця стаття повинна допомогти вам розпочати роботу зі знімком Btrfs.