Функция моментальных снимков файловой системы 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 данные / dev / sdb1
Файловая система Btrfs должна быть создана.
Создать каталог /данные с помощью следующей команды:
$ sudo mkdir -v / данные
Чтобы смонтировать файловую систему Btrfs, созданную на sdb1 раздел в /данные каталог, выполните следующую команду:
$ sudo mount / dev / sdb1 / данные
Файловая система Btrfs должна быть смонтирована, как вы можете видеть на скриншоте ниже.
$ df -h / данные
Подготовка файловой системы Btrfs для снэпшотов
В Btrfs вы можете делать снимки только подтомов Btrfs. Главный корень файловой системы Btrfs также является подтомом. Таким образом, вы можете сделать резервную копию всей файловой системы Btrfs, а также определенных подтомов.
В этом разделе будет создан подобтом Btrfs / данные / проекты / web1 и создайте необходимые файлы для следующих разделов этой статьи ниже. Я также создам каталог, в котором вы можете хранить свои снимки. В следующих разделах я покажу вам, как делать снимки (доступные для записи и только для чтения), обновлять снимки с возможностью записи и восстанавливать файлы из снимков. Итак, приступим.
Сначала создайте новый каталог / данные / проекты следующим образом:
$ sudo mkdir -v / данные / проекты
Создать новый подобтом web1 в / данные / проекты каталог следующим образом:
$ sudo btrfs subvolume создать / данные / проекты / web1
Создать новый файл индекс.html в / данные / проекты / web1 подобъём следующим образом:
$ sudo nano / данные / проекты / web1 / индекс.html
Введите следующие строки кодов в поле индекс.html файл.
Привет, мир 4
Когда вы закончите, нажмите
Создать новый файл стиль.css в / данные / проекты / web1 подобъём следующим образом:
$ sudo nano / данные / проекты / web1 / стиль.css
Введите следующие строки кодов в поле стиль.css файл.
h1цвет: зеленый;
Когда вы закончите, нажмите
Теперь / данные / проекты / web1 подобъем имеет индекс.html а также стиль.css файл.
$ ls -lh / данные / проекты / web1
Я хочу сохранить все снимки этой файловой системы Btrfs в /данные/.снимки каталог.
Создать /данные/.снимки каталог с помощью следующей команды:
$ sudo mkdir -v / data /.снимки
Создание снимков подобъема
Чтобы сделать снимок / данные / проекты / web1 субобъем в /данные/.снимки / web1-2020-12-25 каталог (будет создан автоматически), выполните следующую команду:
$ sudo btrfs снимок подтома / данные / проекты / web1 / данные /.снимки / web1-2020-12-25
Снимок / данные / проекты / web1 каталог должен быть создан на /данные/.снимки / web1-2020-12-25 каталог.
Как вы можете видеть на скриншоте ниже, новый подобъем .снимки / web1-2020-12-25 создано. Моментальный снимок на самом деле является подтомом.
$ sudo btrfs список / данные подтомов
Вы можете увидеть больше информации о созданном вами снимке в /данные/.снимки / web1-2020-12-25 каталог следующим образом:
$ sudo btrfs subvolume show / data /.снимки / web1-2020-12-25
Как видите, все файлы, находящиеся в / данные / проекты / web1 подобъём находится в /данные/.снимки / web1-2020-12-25 снимок.
$ tree -a / data
Восстановление файлов из снимков
В этом разделе я покажу вам, как восстановить файлы из снимков Btrfs.
Во-первых, я покажу вам, как восстановить отдельный файл из снимка.
Открой / данные / проекты / web1 / индекс.html файл с помощью текстового редактора nano следующим образом:
$ sudo nano / данные / проекты / web1 / индекс.html
Внесите любые изменения, которые хотите.
Когда вы закончите, нажмите
Как видите, основной индекс.html файл отличается от индекс.html файл в снимке.
$ cat / data / projects / web1 / index.html$ cat / data /.снимки / web1-2020-12-25 / index.html
Мы внесли изменения в основной индекс.html файл нежелательны, и мы хотим восстановить индекс.html файл из снимка.
Вы можете восстановить индекс.html файл из снимка следующим образом:
$ sudo cp -v / data /.снимки / web1-2020-12-25 / index.HTML / данные / проекты / web1 / индекс.html
Как видите, индекс.html файл восстанавливается из снимка.
$ cat / data / projects / web1 / index.html$ cat / data /.снимки / web1-2020-12-25 / index.html
Теперь давайте посмотрим, как восстановить все файлы / каталоги из снимка.
Удалите все файлы из / данные / проекты / web1 снимок следующим образом:
$ sudo rm -rv / data / projects / web1 / *
Чтобы восстановить все файлы / каталоги из снимка, выполните следующую команду:
$ sudo rsync -avz / data /.снимки / web1-2020-12-25 / / data / projects / web1 /
Как видите, файлы / каталоги восстанавливаются из снапшота.
$ ls -lh / данные / проекты / web1
Наконец, давайте посмотрим, как восстановить файлы / каталоги из снимка в зеркальном режиме. В зеркальном режиме файлы / каталоги подобного тома будут такими же, как и в моментальном снимке. Если в подтоме есть какие-либо файлы / каталоги, которые недоступны в моментальном снимке, они будут удалены.
Давайте создадим новый файл в подобъеме, чтобы отличить дерево файлов от снимка.
Создать ПРОЧТИ МЕНЯ.текст файл в / данные / проекты / web1 подобъём следующим образом:
$ echo "привет, мир 5" | sudo tee / данные / проекты / web1 / README.текст
Как видите, дерево файлов / данные / проекты / web1 подобъем отличается от /данные/.снимки / web1-2020-12-25 снимок.
$ tree -a / данные
Чтобы восстановить файлы / каталоги из /данные/.снимки / web1-2020-12-25 снимок / данные / проекты / web1 subvolume в зеркальном режиме выполните следующую команду:
$ sudo rsync -avz --delete / data /.снимки / web1-2020-12-25 / / data / projects / web1 /
Все файлы / каталоги / данные / проекты / web1 подтом должен быть восстановлен (в зеркальном режиме) из /данные/.снимки / web1-2020-12-25 снимок.
Файловое дерево / данные / проекты / web1 подобъем и /данные/.снимки / web1-2020-12-25 снимок должен быть таким же.
Как видите, индекс.html файл и стиль.css содержимое файла такое же, как в / данные / проекты / web1 подобъем и /данные/.снимки / web1-2020-12-25 снимок.
Содержание индекс.html а также стиль.css файл в / данные / проекты / 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 файл в / данные / проекты / web1 подобъём.
Сначала откройте индекс.html файл из / данные / проекты / web1 подобъем с нано текстовый редактор следующим образом:
$ sudo nano / данные / проекты / web1 / индекс.html
Внесите любые изменения, которые хотите. Когда вы закончите, нажмите
Как видите, индекс.html файла / данные / проекты / web1 подобъем отличается от /данные/.снимки / web1-2020-12-25 снимок.
$ cat / data / projects / web1 / index.html$ cat / data /.снимки / web1-2020-12-25 / index.html
Вы хотите сохранить индекс.html файл / данные / проекты / web1 подобъём.
Чтобы обновить индекс.html файл в /данные/.снимки / web1-2020-12-25 снимок, выполните следующую команду:
$ sudo cp -v / данные / проекты / web1 / индекс.html / data /.снимки / web1-2020-12-25 / index.html
Как видите, индекс.html файл /данные/.снимки / web1-2020-12-25 снимок обновлен.
Обновить снимок так же просто, как скопировать новые файлы в снимок.
Создание снимков подобъема только для чтения
Иногда вы не хотите, чтобы сделанные вами снимки обновлялись каким-либо образом. В этом случае вы можете создавать снимки только для чтения.
Например, чтобы создать моментальный снимок только для чтения /данные/.снимки / web1-2020-12-26 принадлежащий / данные / проекты / web1 subvolume, выполните следующую команду:
$ sudo btrfs снимок подтома -r / data / projects / web1 / data /.снимки / web1-2020-12-26
Как видите, новый подтом .снимки / web1-2020-12-26 создано.
$ sudo btrfs список / данные подтомов
Как видите, снимок /данные/.снимки / web1-2020-12-26 только для чтения.
$ sudo btrfs subvolume show / data /.снимки / web1-2020-12-26
Давайте обновим индекс.html файл из / данные / проекты / web1 подобъём.
Для этого откройте индекс.html файл из / данные / проекты / web1 подобъем с нано текстовый редактор следующим образом:
$ sudo nano / данные / проекты / web1 / индекс.html
Внесите любые изменения, которые хотите. Когда вы закончите, нажмите
Как видите, индекс.html в / данные / проекты / web1 подобъем отличается от /данные/.снимки / web1-2020-12-26 снимок.
$ cat / data / projects / web1 / index.html$ cat / data /.снимки / web1-2020-12-26 / index.html
Попробуем обновить индекс.html файл в /данные/.снимки / web1-2020-12-26 снимок.
$ sudo cp -v / данные / проекты / web1 / индекс.html / data /.снимки / web1-2020-12-26 / index.html
Как видите, обновить индекс.html файл /данные/.снимки / web1-2020-12-26 снимок, потому что снимок доступен только для чтения.
Удаление снимка
Я уже говорил вам ранее, что снимок Btrfs похож на подтом. Итак, вы можете удалить снимок Btrfs точно так же, как вы удаляете вложенный том Btrfs. Та же команда.
Вот как файловое дерево файловой системы Btrfs смонтировано на /данные каталог выглядит на данный момент.
$ tree -a / data
Уберем .снимки / web1-2020-12-25 снимок.
$ sudo btrfs список / данные подтомов
Чтобы удалить /данные/.снимки / web1-2020-12-25 снимок, выполните следующую команду:
$ sudo btrfs subvolume удалить / данные /.снимки / web1-2020-12-25
Как видите, снимок .снимки / web1-2020-12-25 больше не.
$ sudo btrfs список / данные подтомов
Как видите, файлы / каталоги /данные/.снимки / web1-2020-12-25 снимок тоже удаляется.
$ tree -a / данные
Заключение
В этой статье показано, как делать снимки ваших подтомов файловой системы Btrfs с возможностью записи и только для чтения. Я также показал вам, как обновить доступный для записи снимок и восстановить файлы из снимка. Я показал вам, как удалить снимок Btrfs. Эта статья должна помочь вам начать работу с функцией моментальных снимков Btrfs.