Funkcja migawki systemu plików Btrfs wykorzystuje zasadę kopiowania przy zapisie (CoW). Dzięki temu nie zajmuje dużo miejsca na dysku i możesz błyskawicznie robić migawki subwoluminu.
System plików Btrfs obsługuje 2 rodzaje migawek.
- Zapisywalne migawki: Jeśli zrobisz zapisywalną migawkę, możesz później zmodyfikować pliki/katalogi tej migawki. To jest domyślny typ migawki systemu plików Btrfs.
- Migawki tylko do odczytu: Jeśli zrobisz zrzut tylko do odczytu, nie możesz później modyfikować plików/katalogów tego zrzutu.
W tym artykule dowiesz się, jak robić zapisywalne i tylko do odczytu migawki podwoluminów systemu plików Btrfs. Pokażę Ci również, jak zaktualizować zapisywalną migawkę i odzyskać pliki z migawki. Pokażę Ci również, jak usunąć migawkę. Więc zacznijmy.
Warunki wstępne
Aby wypróbować przykłady tego artykułu,
- Musisz mieć zainstalowany system plików Btrfs na swoim komputerze.
- Musisz mieć dysk twardy lub SSD z co najmniej 1 wolną partycją (dowolnego rozmiaru).
Mam dysk twardy 20 GB SDB na moim komputerze z Ubuntu. Utworzyłem 2 partycje sdb1 i sdb2 na tym dysku twardym. Użyję partycji sdb1 w tym artykule.
$ sudo lsblk -e7
Twój dysk twardy lub SSD może mieć inną nazwę niż moja, podobnie jak partycje. Więc pamiętaj, aby od teraz zastąpić je swoimi.
Jeśli potrzebujesz pomocy przy instalacji systemu plików Btrfs na Ubuntu, sprawdź mój artykuł Zainstaluj i używaj Btrfs na Ubuntu 20.04 LTS.
Jeśli potrzebujesz pomocy przy instalacji systemu plików Btrfs w Fedorze, zapoznaj się z moim artykułem Zainstaluj i używaj Btrfs w Fedorze 33.
Tworzenie systemu plików Btrfs
Aby poeksperymentować z podwolumenami Btrfs, musisz utworzyć system plików Btrfs.
Aby utworzyć system plików Btrfs z etykietą dane na sdb1 partycji, uruchom następujące polecenie:
$ sudo mkfs.btrfs -L dane /dev/sdb1
Powinien zostać utworzony system plików Btrfs.
Utwórz katalog /dane za pomocą następującego polecenia:
$ sudo mkdir -v /dane
Aby zamontować system plików Btrfs utworzony na sdb1 przegroda w /dane katalogu, uruchom następujące polecenie:
$ sudo mount /dev/sdb1 /data
System plików Btrfs powinien być zamontowany, jak widać na poniższym zrzucie ekranu.
$ df -h /dane
Przygotowanie systemu plików Btrfs do migawek
W Btrfs możesz robić zrzuty tylko podwoluminów Btrfs. Główny katalog główny systemu plików Btrfs jest również podwoluminem. Możesz więc wykonać kopię zapasową całego systemu plików Btrfs, a także określonych podwoluminów.
Ta sekcja utworzy podwolumin Btrfs /dane/projekty/web1 i utwórz niezbędne pliki dla następnych sekcji tego artykułu poniżej. Stworzę również katalog, w którym będziesz mógł przechowywać swoje migawki. W kolejnych sekcjach pokażę, jak robić migawki (zapisywalne i tylko do odczytu), aktualizować migawkę z możliwością zapisu i odzyskiwać pliki z migawki. Więc zacznijmy.
Najpierw utwórz nowy katalog /dane/projekty następująco:
$ sudo mkdir -v /dane/projekty
Utwórz nowy podwolumin web1 w /dane/projekty katalog w następujący sposób:
$ sudo btrfs subvolume create /data/projects/web1
Utwórz nowy plik indeks.html w /dane/projekty/web1 podtom w następujący sposób:
$ sudo nano /dane/projekty/web1/indeks.html
Wpisz następujące wiersze kodów w indeks.html plik.
Witaj świecie 4
Gdy skończysz, naciśnij
Utwórz nowy plik styl.css w /dane/projekty/web1 podtom w następujący sposób:
$ sudo nano /dane/projekty/web1/styl.css
Wpisz następujące wiersze kodów w styl.css plik.
h1Zielony kolor;
Gdy skończysz, naciśnij
Teraz /dane/projekty/web1 podtom ma indeks.html i styl.css plik.
$ ls -lh /dane/projekty/web1
Chcę zachować wszystkie migawki tego systemu plików Btrfs w /dane/.migawki informator.
Utwórz /dane/.migawki katalog za pomocą następującego polecenia:
$ sudo mkdir -v /dane/.migawki
Wykonywanie migawek podtomu
Aby zrobić zdjęcie /dane/projekty/web1 podtom w /dane/.migawki/internet1-2020-12-25 katalog (zostanie utworzony automatycznie), uruchom następującą komendę:
$ sudo btrfs migawka podwoluminu /dane/projekty/web1 /dane/.migawki/internet1-2020-12-25
Migawka z /dane/projekty/web1 katalog powinien być utworzony na /dane/.migawki/internet1-2020-12-25 informator.
Jak widać na poniższym zrzucie ekranu, nowy subtom .migawki/internet1-2020-12-25 jest tworzone. Migawka to tak naprawdę subtom.
$ sudo btrfs lista podwoluminów /dane
Więcej informacji o utworzonym zrzucie możesz zobaczyć w /dane/.migawki/internet1-2020-12-25 katalog w następujący sposób:
$ sudo btrfs subvolume pokaż /dane/.migawki/internet1-2020-12-25
Jak widać, wszystkie pliki znajdujące się w /dane/projekty/web1 subvolume są w /dane/.migawki/internet1-2020-12-25 migawka.
$ drzewo -a /dane
Odzyskiwanie plików z migawek
W tej sekcji pokażę, jak odzyskać pliki z migawek Btrfs.
Najpierw pokażę, jak odzyskać pojedynczy plik z migawki.
Otworzyć /dane/projekty/web1/indeks.html plik z edytorem tekstu nano w następujący sposób:
$ sudo nano /dane/projekty/web1/indeks.html
Wprowadź dowolne zmiany.
Gdy skończysz, naciśnij
Jak widać, główne indeks.html plik różni się od indeks.html plik w migawce.
$ cat /dane/projekty/web1/indeks.html$ kot /dane/.migawki/internet1-2020-12-25/indeks.html
Wprowadziliśmy zmiany w głównym indeks.html pliki są niechciane i chcemy je odzyskać indeks.html plik z migawki.
Możesz przywrócić indeks.html plik z migawki w następujący sposób:
$ sudo cp -v /dane/.migawki/internet1-2020-12-25/indeks.html /data/projekty/web1/index.html
Jak widać, indeks.html plik zostanie przywrócony ze zrzutu.
$ cat /dane/projekty/web1/indeks.html$ kot /dane/.migawki/internet1-2020-12-25/indeks.html
Zobaczmy teraz, jak odzyskać wszystkie pliki/katalogi z migawki.
Usuń wszystkie pliki z /dane/projekty/web1 migawka w następujący sposób:
$ sudo rm -rv /dane/projekty/web1/*
Aby odzyskać wszystkie pliki/katalogi z migawki, uruchom następujące polecenie:
$ sudo rsync -avz /data/.migawki/web1-2020-12-25/ /dane/projekty/web1/
Jak widać, pliki/katalogi są przywracane ze zrzutu.
$ ls -lh /dane/projekty/web1
Na koniec zobaczmy, jak odzyskać pliki/katalogi z migawki w trybie lustrzanym. W trybie lustrzanym pliki/katalogi subwoluminu będą takie same jak w migawce. Jeśli w subwolumie znajdują się jakieś pliki/katalogi, które nie są dostępne w migawce, zostaną one usunięte.
Utwórzmy nowy plik w podwolumie, aby odróżnić drzewo plików od migawki.
Stwórz CZYTAJ.tekst plik w /dane/projekty/web1 podtom w następujący sposób:
$ echo "witaj świecie 5" | koszulka sudo /data/projekty/web1/README.tekst
Jak widać, drzewo plików /dane/projekty/web1 subvolume różni się od /dane/.migawki/internet1-2020-12-25 migawka.
$ drzewo -a /dane
Aby przywrócić pliki/katalogi z /dane/.migawki/internet1-2020-12-25 migawka do /dane/projekty/web1 subvolume w trybie lustrzanym, uruchom następujące polecenie:
$ sudo rsync -avz --delete /dane/.migawki/web1-2020-12-25/ /dane/projekty/web1/
Wszystkie pliki/katalogi /dane/projekty/web1 subwolumin powinien zostać przywrócony (w trybie lustrzanym) z /dane/.migawki/internet1-2020-12-25 migawka.
Drzewo plików /dane/projekty/web1 subvolume i /dane/.migawki/internet1-2020-12-25 migawka powinna być taka sama.
Jak widać, indeks.plik html i styl.zawartość pliku css jest taka sama w /dane/projekty/web1 subvolume i /dane/.migawki/internet1-2020-12-25 migawka.
Zawartość indeks.html i styl.css plik w /dane/projekty/web1 subvolume.
$ cat /dane/projekty/web1/indeks.html$ cat /dane/projekty/web1/styl.css
Zawartość indeks.html i styl.css plik w /dane/.migawki/internet1-2020-12-25 migawka.
$ cat /dane/projekty/web1/indeks.html$ cat /dane/projekty/web1/styl.css
Aktualizowanie migawki
Domyślnie system plików Btrfs wykonuje zapisywalne migawki. Migawka Btrfs jest jak podwolumin. Możesz więc modyfikować/aktualizować pliki/katalogi zapisywalnej migawki.
Zaktualizujmy indeks.html plik w /dane/projekty/web1 subtom.
Najpierw otwórz indeks.html plik z /dane/projekty/web1 subtom z nano edytor tekstu w następujący sposób:
$ sudo nano /dane/projekty/web1/indeks.html
Wprowadź dowolne zmiany. Gdy skończysz, naciśnij
Jak widać, indeks.plik html z /dane/projekty/web1 subvolume różni się od /dane/.migawki/internet1-2020-12-25 migawka.
$ cat /dane/projekty/web1/indeks.html$ kot /dane/.migawki/internet1-2020-12-25/indeks.html
Chcesz zachować indeks.html plik /dane/projekty/web1 subtom.
Aby zaktualizować indeks.html plik w /dane/.migawki/internet1-2020-12-25 migawka, uruchom następujące polecenie:
$ sudo cp -v /dane/projekty/web1/indeks.html /dane/.migawki/internet1-2020-12-25/indeks.html
Jak widać, indeks.html plik /dane/.migawki/internet1-2020-12-25 migawka jest aktualizowana.
Aktualizacja zrzutu jest tak prosta, jak kopiowanie nowych plików do zrzutu.
Wykonywanie migawek tylko do odczytu z podwolumu
Czasami nie chcesz, aby zrobione migawki były w jakikolwiek sposób aktualizowane. W takim przypadku możesz tworzyć migawki tylko do odczytu.
Na przykład, aby utworzyć migawkę tylko do odczytu /dane/.migawki/internet1-2020-12-26 z /dane/projekty/web1 subvolume, uruchom następujące polecenie:
$ sudo btrfs migawka podwolumu -r /data/projects/web1 /data/.migawki/internet1-2020-12-26
Jak widać, nowy subtom .migawki/internet1-2020-12-26 jest tworzone.
$ sudo btrfs lista podwoluminów /dane
Jak widać, migawka /dane/.migawki/internet1-2020-12-26 jest tylko do odczytu.
$ sudo btrfs subvolume pokaż /dane/.migawki/internet1-2020-12-26
Zaktualizujmy indeks.html plik z /dane/projekty/web1 subtom.
Aby to zrobić, otwórz indeks.html plik z /dane/projekty/web1 subtom z nano edytor tekstu w następujący sposób:
$ sudo nano /dane/projekty/web1/indeks.html
Wprowadź dowolne zmiany. Gdy skończysz, naciśnij
Jak widać, indeks.html w /dane/projekty/web1 subvolume różni się od /dane/.migawki/internet1-2020-12-26 migawka.
$ cat /dane/projekty/web1/indeks.html$ kot /dane/.migawki/web1-2020-12-26/indeks.html
Spróbujmy zaktualizować indeks.html plik w /dane/.migawki/internet1-2020-12-26 migawka.
$ sudo cp -v /dane/projekty/web1/indeks.html /dane/.migawki/web1-2020-12-26/indeks.html
Jak widać, nie można zaktualizować indeks.html plik /dane/.migawki/internet1-2020-12-26 migawka, ponieważ migawka jest tylko do odczytu.
Usuwanie zrzutu
Mówiłem wcześniej, że migawka Btrfs jest jak podwolumin. Możesz więc usunąć migawkę Btrfs, tak jak usuwasz podwolumin Btrfs. To samo polecenie.
W ten sposób drzewo plików systemu plików Btrfs zamontowane na /dane katalog wygląda jak w tej chwili.
$ drzewo -a /dane
Usuńmy .migawki/internet1-2020-12-25 migawka.
$ sudo btrfs lista podwoluminów /dane
Aby usunąć /dane/.migawki/internet1-2020-12-25 migawka, uruchom następujące polecenie:
$ sudo btrfs subvolume usuń /data/.migawki/internet1-2020-12-25
Jak widać, migawka .migawki/internet1-2020-12-25 już nie ma.
$ sudo btrfs lista podwoluminów /dane
Jak widać, pliki/katalogi /dane/.migawki/internet1-2020-12-25 migawka również jest usuwana.
$ drzewo -a /dane
Wniosek
W tym artykule pokazano, jak robić zapisywalne i tylko do odczytu migawki podwoluminów systemu plików Btrfs. Pokazałem również, jak zaktualizować zapisywalną migawkę i odzyskać pliki z migawki. Pokazałem ci również, jak usunąć migawkę Btrfs. Ten artykuł powinien pomóc w rozpoczęciu korzystania z funkcji migawek Btrfs.