Snapshot-funktionen i Btrfs-filsystemet bruger Copy-on-Write (CoW) -princippet. Så det tager ikke meget diskplads, og du kan tage øjebliksbilleder af et undervolumen med det samme.
Btrfs-filsystemet understøtter 2 typer snapshots.
- Skrivelige snapshots: Hvis du tager et skrivbart øjebliksbillede, kan du ændre det snapshots filer / mapper senere. Dette er standard snapshot-typen af Btrfs-filsystemet.
- Skrivebeskyttede snapshots: Hvis du tager et skrivebeskyttet snapshot, kan du ikke ændre snapshots filer / mapper senere.
Denne artikel viser dig, hvordan du tager skrivbare og skrivebeskyttede snapshots af dine Btrfs-filsystems undervolumener. Jeg vil også vise dig, hvordan du opdaterer et skrivbart øjebliksbillede og gendanner filer fra et øjebliksbillede. Jeg viser dig også, hvordan du fjerner et øjebliksbillede. Så lad os komme i gang.
Forudsætninger
For at prøve eksemplerne på denne artikel,
- Du skal have Btrfs-filsystemet installeret på din computer.
- Du skal have en harddisk eller SSD med mindst 1 gratis partition (af enhver størrelse).
Jeg har en 20 GB harddisk sdb på min Ubuntu-maskine. Jeg har oprettet 2 partitioner sdb1 og sdb2 på denne harddisk. Jeg bruger partitionen sdb1 i denne artikel.
$ sudo lsblk -e7
Din harddisk eller SSD kan have et andet navn end min, så vil partitionerne også. Så sørg for at erstatte dem med din fra nu af.
Hvis du har brug for hjælp til installation af Btrfs-filsystemet på Ubuntu, skal du tjekke min artikel Installer og brug Btrfs på Ubuntu 20.04 LTS.
Hvis du har brug for hjælp til installation af Btrfs-filsystemet på Fedora, skal du tjekke min artikel Installer og brug Btrfs på Fedora 33.
Oprettelse af et Btrfs-filsystem
For at eksperimentere med Btrfs-undervolumener skal du oprette et Btrfs-filsystem.
At oprette et Btrfs-filsystem med etiketten data på den sdb1 partition, kør følgende kommando:
$ sudo mkfs.btrfs -L data / dev / sdb1
Der skal oprettes et Btrfs-filsystem.
Opret en mappe /data med følgende kommando:
$ sudo mkdir -v / data
At montere Btrfs-filsystemet oprettet på sdb1 partition i /data bibliotek, kør følgende kommando:
$ sudo mount / dev / sdb1 / data
Btrfs-filsystemet skal monteres som du kan se på skærmbilledet nedenfor.
$ df -h / data
Forberedelse af Btrfs-filsystemet til snapshots
I Btrfs kan du kun tage snapshots af Btrfs-undervolumener. Hovedroten til et Btrfs-filsystem er også et undervolumen. Så du kan tage sikkerhedskopien af hele Btrfs-filsystemet såvel som specifikke undervolumener.
Dette afsnit opretter et Btrfs-undervolumen / data / projekter / web1 og opret de nødvendige filer til de næste sektioner i denne artikel nedenfor. Jeg opretter også et bibliotek, hvor du kan gemme dine snapshots. I de næste sektioner vil jeg vise dig, hvordan du tager snapshots (skrivbar og skrivebeskyttet), opdaterer et skrivbart snapshot og gendanner filer fra snapshotet. Så lad os komme i gang.
Opret først en ny mappe / data / projekter som følger:
$ sudo mkdir -v / data / projekter
Opret et nyt undervolumen web1 i / data / projekter katalog som følger:
$ sudo btrfs subvolume create / data / projects / web1
Opret en ny fil indeks.html i / data / projekter / web1 undervolumen som følger:
$ sudo nano / data / projekter / web1 / indeks.html
Indtast de følgende linjer med koder i indeks.html fil.
Hej verden 4
Når du er færdig, skal du trykke på
Opret en ny fil stil.css i / data / projekter / web1 undervolumen som følger:
$ sudo nano / data / projekter / web1 / stil.css
Indtast de følgende linjer med koder i stil.css fil.
h1farve: grøn;
Når du er færdig, skal du trykke på
Nu, den / data / projekter / web1 undervolumen har indeks.html og stil.css fil.
$ ls -lh / data / projekter / web1
Jeg vil beholde alle snapshots af dette Btrfs-filsystem i /data/.snapshots vejviser.
Opret /data/.snapshots bibliotek med følgende kommando:
$ sudo mkdir -v / data /.snapshots
Optagelse af snapshots af et undervolumen
At tage et øjebliksbillede af / data / projekter / web1 delvolumen ind i /data/.snapshots / web1-2020-12-25 bibliotek (oprettes automatisk), kør følgende kommando:
$ sudo btrfs subvolume snapshot / data / projekter / web1 / data /.snapshots / web1-2020-12-25
Et øjebliksbillede af / data / projekter / web1 mappe skal oprettes på /data/.snapshots / web1-2020-12-25 vejviser.
Som du kan se på skærmbilledet nedenfor, et nyt undervolumen .snapshots / web1-2020-12-25 er oprettet. Et øjebliksbillede er faktisk et undervolumen.
$ sudo btrfs undervolumenliste / data
Du kan se flere oplysninger om det øjebliksbillede, du har oprettet i /data/.snapshots / web1-2020-12-25 katalog som følger:
$ sudo btrfs subvolume show / data /.snapshots / web1-2020-12-25
Som du kan se, er alle filerne i / data / projekter / web1 undervolumen er i /data/.snapshots / web1-2020-12-25 øjebliksbillede.
$ træ -a / data
Gendannelse af filer fra snapshots
I dette afsnit vil jeg vise dig, hvordan du gendanner filer fra Btrfs-snapshots.
Først skal jeg vise dig, hvordan du gendanner en enkelt fil fra øjebliksbillede.
Åbn / data / projekter / web1 / indeks.html fil med nano-teksteditoren som følger:
$ sudo nano / data / projekter / web1 / indeks.html
Foretag de ønskede ændringer.
Når du er færdig, skal du trykke på
Som du kan se, er det vigtigste indeks.html filen er forskellig fra indeks.html fil i snapshotet.
$ kat / data / projekter / web1 / indeks.html$ kat / data /.snapshots / web1-2020-12-25 / index.html
Vi har foretaget de vigtigste ændringer indeks.html filen er uønsket, og vi vil gendanne indeks.html fil fra øjebliksbillede.
Du kan gendanne indeks.html fil fra øjebliksbillede som følger:
$ sudo cp -v / data /.snapshots / web1-2020-12-25 / index.html / data / projekter / web1 / indeks.html
Som du kan se, er indeks.html filen gendannes fra øjebliksbillede.
$ kat / data / projekter / web1 / indeks.html$ kat / data /.snapshots / web1-2020-12-25 / index.html
Lad os nu se, hvordan du gendanner alle filer / mapper fra øjebliksbillede.
Fjern alle filerne fra / data / projekter / web1 øjebliksbillede som følger:
$ sudo rm -rv / data / projekter / web1 / *
For at gendanne alle filer / mapper fra øjebliksbillede skal du køre følgende kommando:
$ sudo rsync -avz / data /.snapshots / web1-2020-12-25 / / data / projekter / web1 /
Som du kan se, gendannes filerne / mapperne fra øjebliksbillede.
$ ls -lh / data / projekter / web1
Lad os endelig se, hvordan du gendanner filer / mapper fra øjebliksbillede i spejletilstand. I spejltilstand er undervolumenets filer / mapper de samme som i øjebliksbillede. Hvis der er filer / mapper i undervolumen, der ikke er tilgængelige i øjebliksbillede, fjernes de.
Lad os oprette en ny fil i undervolumen for at differentiere filtræet fra øjebliksbillede.
Lave en LÆS MERE.txt fil i / data / projekter / web1 undervolumen som følger:
$ echo "hej verden 5" | sudo tee / data / projekter / web1 / README.txt
Som du kan se, er filtræet for / data / projekter / web1 undervolumen er forskelligt fra /data/.snapshots / web1-2020-12-25 øjebliksbillede.
$ træ -a / data
For at gendanne filerne / mapperne fra /data/.snapshots / web1-2020-12-25 øjebliksbillede til / data / projekter / web1 undervolumen i spejltilstand, kør følgende kommando:
$ sudo rsync -avz --delete / data /.snapshots / web1-2020-12-25 / / data / projekter / web1 /
Alle filer / mapper i / data / projekter / web1 undervolumen skal gendannes (i spejltilstand) fra /data/.snapshots / web1-2020-12-25 øjebliksbillede.
Filtræet til / data / projekter / web1 undervolumen og /data/.snapshots / web1-2020-12-25 øjebliksbillede skal være det samme.
Som du kan se, indekset.html-fil og stil.css-filindholdet er det samme i / data / projekter / web1 undervolumen og /data/.snapshots / web1-2020-12-25 øjebliksbillede.
Indholdet af indeks.html og stil.css fil i / data / projekter / web1 undervolumen.
$ kat / data / projekter / web1 / indeks.html$ kat / data / projekter / web1 / stil.css
Indholdet af indeks.html og stil.css fil i /data/.snapshots / web1-2020-12-25 øjebliksbillede.
$ kat / data / projekter / web1 / indeks.html$ kat / data / projekter / web1 / stil.css
Opdatering af et øjebliksbillede
Som standard tager Btrfs-filsystemet skrivbare snapshots. Et Btrfs-øjebliksbillede er ligesom et undervolumen. Så du kan ændre / opdatere filerne / mapperne til et skrivbart øjebliksbillede.
Lad os opdatere indeks.html fil i / data / projekter / web1 undervolumen.
Først skal du åbne indeks.html fil fra / data / projekter / web1 delvolumen med nano teksteditor som følger:
$ sudo nano / data / projekter / web1 / indeks.html
Foretag de ændringer, du ønsker. Når du er færdig, skal du trykke på
Som du kan se, indekset.html-fil af / data / projekter / web1 undervolumen er forskelligt fra /data/.snapshots / web1-2020-12-25 øjebliksbillede.
$ kat / data / projekter / web1 / indeks.html$ kat / data /.snapshots / web1-2020-12-25 / index.html
Du vil beholde indeks.html fil af / data / projekter / web1 undervolumen.
For at opdatere indeks.html fil i /data/.snapshots / web1-2020-12-25 snapshot, kør følgende kommando:
$ sudo cp -v / data / projekter / web1 / indeks.html / data /.snapshots / web1-2020-12-25 / index.html
Som du kan se, er indeks.html fil af /data/.snapshots / web1-2020-12-25 øjebliksbillede er opdateret.
Opdatering af et øjebliksbillede er lige så let som at kopiere nye filer til øjebliksbillede.
Optagelse af skrivebeskyttede snapshots af et undervolumen
Til tider vil du ikke have, at de snapshots, du har taget, skal opdateres på nogen måde. I så fald kan du oprette skrivebeskyttede snapshots.
For eksempel at oprette et skrivebeskyttet øjebliksbillede /data/.snapshots / web1-2020-12-26 af / data / projekter / web1 subvolume, kør følgende kommando:
$ sudo btrfs subvolume snapshot -r / data / projekter / web1 / data /.snapshots / web1-2020-12-26
Som du kan se, et nyt undervolumen .snapshots / web1-2020-12-26 er oprettet.
$ sudo btrfs undervolumenliste / data
Som du kan se, øjebliksbillede /data/.snapshots / web1-2020-12-26 er skrivebeskyttet.
$ sudo btrfs subvolume show / data /.snapshots / web1-2020-12-26
Lad os opdatere indeks.html fil fra / data / projekter / web1 undervolumen.
For at gøre det skal du åbne indeks.html fil fra / data / projekter / web1 delvolumen med nano teksteditor som følger:
$ sudo nano / data / projekter / web1 / indeks.html
Foretag de ændringer, du ønsker. Når du er færdig, skal du trykke på
Som du kan se, er indeks.html i / data / projekter / web1 undervolumen er forskellig fra /data/.snapshots / web1-2020-12-26 øjebliksbillede.
$ kat / data / projekter / web1 / indeks.html$ kat / data /.snapshots / web1-2020-12-26 / indeks.html
Lad os prøve at opdatere indeks.html fil i /data/.snapshots / web1-2020-12-26 øjebliksbillede.
$ sudo cp -v / data / projekter / web1 / indeks.html / data /.snapshots / web1-2020-12-26 / indeks.html
Som du kan se, kan du ikke opdatere indeks.html fil af /data/.snapshots / web1-2020-12-26 snapshot, fordi snapshotet er skrivebeskyttet.
Fjernelse af et øjebliksbillede
Jeg har fortalt dig tidligere, at et Btrfs-øjebliksbillede er som et undervolumen. Så du kan fjerne et Btrfs-øjebliksbillede, ligesom du fjerner et Btrfs-undervolumen. Samme kommando.
Sådan monteres filtræet til Btrfs-filsystemet på /data katalog ser ud i øjeblikket.
$ træ -a / data
Lad os fjerne .snapshots / web1-2020-12-25 øjebliksbillede.
$ sudo btrfs undervolumenliste / data
For at fjerne /data/.snapshots / web1-2020-12-25 snapshot, kør følgende kommando:
$ sudo btrfs subvolume sletning / data /.snapshots / web1-2020-12-25
Som du kan se, øjebliksbillede .snapshots / web1-2020-12-25 er ikke mere.
$ sudo btrfs undervolumenliste / data
Som du kan se, filerne / katalogerne til /data/.snapshots / web1-2020-12-25 snapshot fjernes også.
$ træ -a / data
Konklusion
Denne artikel har vist dig, hvordan du tager skrivbare og skrivebeskyttede snapshots af dine Btrfs-filsystemundervolumen. Jeg har også vist dig, hvordan du opdaterer et skrivbart øjebliksbillede og gendanner filer fra et øjebliksbillede. Jeg har vist dig, hvordan du også fjerner et Btrfs-øjebliksbillede. Denne artikel skal hjælpe dig med at komme i gang med funktionen Btrfs snapshot.