Ögonblicksbildfunktionen för Btrfs-filsystemet använder principen Copy-on-Write (CoW). Så det tar inte mycket diskutrymme och du kan ta ögonblicksbilder av en undervolym direkt.
Btrfs-filsystemet stöder två typer av ögonblicksbilder.
- Skrivbara ögonblicksbilder: Om du tar en skrivbar ögonblicksbild kan du ändra den snapshots filer / kataloger senare. Detta är standard ögonblicksbildstyp för Btrfs-filsystemet.
- Skrivskyddade ögonblicksbilder: Om du tar en skrivskyddad ögonblicksbild kan du inte ändra den snapshots filer / kataloger senare.
Den här artikeln visar hur du tar skrivbara och skrivskyddade ögonblicksbilder av dina Btrfs-filsystems delvolymer. Jag kommer också att visa dig hur du uppdaterar en skrivbar ögonblicksbild och återställer filer från en ögonblicksbild. Jag visar dig hur du tar bort en ögonblicksbild också. Så, låt oss komma igång.
Förutsättningar
För att testa exemplen i den här artikeln,
- Du måste ha Btrfs-filsystemet installerat på din dator.
- Du måste ha en hårddisk eller SSD med minst en ledig partition (av alla storlekar).
Jag har en 20 GB hårddisk sdb på min Ubuntu-maskin. Jag har skapat två partitioner sdb1 och sdb2 på den här hårddisken. Jag kommer att använda partitionen sdb1 i den här artikeln.
$ sudo lsblk -e7
Din hårddisk eller SSD kan ha ett annat namn än mitt, så kommer partitionerna också att göra. Så se till att ersätta dem med din från och med nu.
Om du behöver hjälp med att installera Btrfs-filsystemet på Ubuntu, kolla in min artikel Installera och använd Btrfs på Ubuntu 20.04 LTS.
Om du behöver hjälp med att installera Btrfs-filsystemet på Fedora, kolla in min artikel Installera och använd Btrfs på Fedora 33.
Skapa ett Btrfs-filsystem
För att experimentera med Btrfs-delvolymer måste du skapa ett Btrfs-filsystem.
Att skapa ett Btrfs-filsystem med etiketten data på sdb1 partition, kör följande kommando:
$ sudo mkfs.btrfs -L data / dev / sdb1
Ett Btrfs-filsystem ska skapas.
Skapa en katalog /data med följande kommando:
$ sudo mkdir -v / data
För att montera Btrfs-filsystemet som skapats på sdb1 partition i /data katalog, kör följande kommando:
$ sudo mount / dev / sdb1 / data
Btrfs-filsystemet ska monteras som du kan se på skärmdumpen nedan.
$ df -h / data
Förbereder Btrfs-filsystemet för ögonblicksbilder
I Btrfs kan du bara ta bilder av Btrfs-delvolymer. Huvudroten till ett Btrfs-filsystem är också en delvolym. Så du kan ta säkerhetskopian av hela Btrfs-filsystemet samt specifika delvolymer.
Detta avsnitt skapar en Btrfs-delvolym / data / projekt / webb1 och skapa nödvändiga filer för nästa avsnitt i den här artikeln nedan. Jag kommer också att skapa en katalog där du kan behålla dina ögonblicksbilder. I nästa avsnitt visar jag dig hur du tar ögonblicksbilder (skrivbar och skrivskyddad), uppdaterar en skrivbar ögonblicksbild och återställer filer från ögonblicksbilden. Så, låt oss komma igång.
Skapa först en ny katalog / data / projekt som följer:
$ sudo mkdir -v / data / projects
Skapa en ny delvolym webb1 i / data / projekt katalog enligt följande:
$ sudo btrfs subvolume create / data / projects / web1
Skapa en ny fil index.html i / data / projekt / webb1 delvolym enligt följande:
$ sudo nano / data / projects / web1 / index.html
Skriv in följande rader med koder i index.html fil.
Hello World 4
När du är klar trycker du på
Skapa en ny fil stil.css i / data / projekt / webb1 delvolym enligt följande:
$ sudo nano / data / projects / web1 / style.css
Skriv in följande rader med koder i stil.css fil.
h1färg: grön;
När du är klar trycker du på
Nu den / data / projekt / webb1 delvolymen har index.html och stil.css fil.
$ ls -lh / data / projects / web1
Jag vill behålla alla ögonblicksbilder av detta Btrfs-filsystem i /data/.ögonblicksbilder katalog.
Skapa /data/.ögonblicksbilder katalog med följande kommando:
$ sudo mkdir -v / data /.ögonblicksbilder
Ta ögonblicksbilder av en delvolym
Att ta en ögonblicksbild av / data / projekt / webb1 delvolym in i /data/.snapshots / web1-2020-12-25 katalog (skapas automatiskt), kör följande kommando:
$ sudo btrfs delvolym ögonblicksbild / data / projekt / web1 / data /.snapshots / web1-2020-12-25
En ögonblicksbild av / data / projekt / webb1 katalogen ska skapas på /data/.snapshots / web1-2020-12-25 katalog.
Som du kan se på skärmdumpen nedan, en ny delvolym .snapshots / web1-2020-12-25 är skapad. En ögonblicksbild är faktiskt en delvolym.
$ sudo btrfs subvolume list / data
Du kan se mer information om ögonblicksbilden du skapade i /data/.snapshots / web1-2020-12-25 katalog enligt följande:
$ sudo btrfs subvolume show / data /.snapshots / web1-2020-12-25
Som du kan se, alla filer som finns i / data / projekt / webb1 delvolym finns i /data/.snapshots / web1-2020-12-25 ögonblicksbild.
$ tree -a / data
Återställa filer från ögonblicksbilder
I det här avsnittet ska jag visa dig hur du återställer filer från Btrfs-ögonblicksbilderna.
Först ska jag visa dig hur du återställer en enda fil från ögonblicksbilden.
Öppna / data / projekt / web1 / index.html fil med nano-textredigeraren enligt följande:
$ sudo nano / data / projects / web1 / index.html
Gör eventuella ändringar du vill ha.
När du är klar trycker du på
Som du kan se, den viktigaste index.html filen skiljer sig från index.html fil i ögonblicksbilden.
$ cat / data / projects / web1 / index.html$ cat / data /.snapshots / web1-2020-12-25 / index.html
Vi har gjort ändringarna i huvudmenyn index.html filen är oönskad, och vi vill återställa index.html fil från ögonblicksbilden.
Du kan återställa index.html fil från ögonblicksbilden enligt följande:
$ sudo cp -v / data /.snapshots / web1-2020-12-25 / index.html / data / projekt / web1 / index.html
Som du kan se index.html filen återställs från ögonblicksbilden.
$ cat / data / projects / web1 / index.html$ cat / data /.snapshots / web1-2020-12-25 / index.html
Låt oss nu se hur du återställer alla filer / kataloger från ögonblicksbilden.
Ta bort alla filer från / data / projekt / webb1 ögonblicksbild enligt följande:
$ sudo rm -rv / data / projects / web1 / *
För att återställa alla filer / kataloger från ögonblicksbilden, kör följande kommando:
$ sudo rsync -avz / data /.snapshots / web1-2020-12-25 / / data / projects / web1 /
Som du kan se återställs filerna / katalogerna från ögonblicksbilden.
$ ls -lh / data / projects / web1
Slutligen, låt oss se hur man återställer filer / kataloger från ögonblicksbilden i spegelläge. I spegelläge kommer undervolymens filer / kataloger att vara desamma som i ögonblicksbilden. Om det finns filer / kataloger i delvolymen som inte är tillgängliga i ögonblicksbilden tas de bort.
Låt oss skapa en ny fil i undervolymen för att skilja filträdet från ögonblicksbilden.
Skapa en LÄS.Text filen i / data / projekt / webb1 delvolym enligt följande:
$ echo "hej värld 5" | sudo tee / data / projects / web1 / README.Text
Som du kan se, är filträdet för / data / projekt / webb1 delvolymen skiljer sig från /data/.snapshots / web1-2020-12-25 ögonblicksbild.
$ tree -a / data
För att återställa filerna / katalogerna från /data/.snapshots / web1-2020-12-25 ögonblicksbild till / data / projekt / webb1 delvolym i spegelläge, kör följande kommando:
$ sudo rsync -avz --delete / data /.snapshots / web1-2020-12-25 / / data / projects / web1 /
Alla filer / kataloger i / data / projekt / webb1 undervolymen bör återställas (i spegelläge) från /data/.snapshots / web1-2020-12-25 ögonblicksbild.
Filträdet för / data / projekt / webb1 delvolym och /data/.snapshots / web1-2020-12-25 ögonblicksbild ska vara densamma.
Som du kan se indexet.html-fil och stil.css-filinnehållet är detsamma i / data / projekt / webb1 delvolym och /data/.snapshots / web1-2020-12-25 ögonblicksbild.
Innehållet i index.html och stil.css filen i / data / projekt / webb1 delvolym.
$ cat / data / projects / web1 / index.html$ cat / data / projects / web1 / style.css
Innehållet i index.html och stil.css filen i /data/.snapshots / web1-2020-12-25 ögonblicksbild.
$ cat / data / projects / web1 / index.html$ cat / data / projects / web1 / style.css
Uppdaterar en ögonblicksbild
Som standard tar Btrfs-filsystemet skrivbara ögonblicksbilder. En Btrfs-ögonblicksbild är precis som en delvolym. Så du kan ändra / uppdatera filer / kataloger för en skrivbar ögonblicksbild.
Låt oss uppdatera index.html filen i / data / projekt / webb1 delvolym.
Öppna först index.html fil från / data / projekt / webb1 delvolym med nano textredigerare enligt följande:
$ sudo nano / data / projects / web1 / index.html
Gör eventuella ändringar du vill ha. När du är klar trycker du på
Som du kan se indexet.html-fil av / data / projekt / webb1 delvolymen skiljer sig från /data/.snapshots / web1-2020-12-25 ögonblicksbild.
$ cat / data / projects / web1 / index.html$ cat / data /.snapshots / web1-2020-12-25 / index.html
Du vill behålla index.html fil för / data / projekt / webb1 delvolym.
För att uppdatera index.html filen i /data/.snapshots / web1-2020-12-25 ögonblicksbild, kör följande kommando:
$ sudo cp -v / data / projects / web1 / index.html / data /.snapshots / web1-2020-12-25 / index.html
Som du kan se index.html fil för /data/.snapshots / web1-2020-12-25 ögonblicksbilden uppdateras.
Att uppdatera en ögonblicksbild är lika enkelt som att kopiera nya filer till ögonblicksbilden.
Ta skrivskyddade ögonblicksbilder av en delvolym
Ibland vill du inte att de ögonblicksbilder du har tagit ska uppdateras på något sätt. I så fall kan du skapa skrivskyddade ögonblicksbilder.
Till exempel för att skapa en skrivskyddad ögonblicksbild /data/.snapshots / web1-2020-12-26 av / data / projekt / webb1 subvolume, kör följande kommando:
$ sudo btrfs subvolume snapshot -r / data / projects / web1 / data /.snapshots / web1-2020-12-26
Som du kan se, en ny delvolym .snapshots / web1-2020-12-26 är skapad.
$ sudo btrfs subvolume list / data
Som du kan se ögonblicksbilden /data/.snapshots / web1-2020-12-26 är skrivskyddad.
$ sudo btrfs subvolume show / data /.snapshots / web1-2020-12-26
Låt oss uppdatera index.html fil från / data / projekt / webb1 delvolym.
För att göra det, öppna index.html fil från / data / projekt / webb1 delvolym med nano textredigerare enligt följande:
$ sudo nano / data / projects / web1 / index.html
Gör eventuella ändringar du vill ha. När du är klar trycker du på
Som du kan se index.html i / data / projekt / webb1 delvolymen skiljer sig från /data/.snapshots / web1-2020-12-26 ögonblicksbild.
$ cat / data / projects / web1 / index.html$ cat / data /.snapshots / web1-2020-12-26 / index.html
Låt oss försöka uppdatera index.html filen i /data/.snapshots / web1-2020-12-26 ögonblicksbild.
$ sudo cp -v / data / projects / web1 / index.html / data /.snapshots / web1-2020-12-26 / index.html
Som du kan se kan du inte uppdatera index.html fil för /data/.snapshots / web1-2020-12-26 ögonblicksbild eftersom ögonblicksbilden är skrivskyddad.
Ta bort en ögonblicksbild
Jag har tidigare sagt att en Btrfs-ögonblicksbild är som en delvolym. Så du kan ta bort en Btrfs-ögonblicksbild precis som du tar bort en Btrfs-delvolym. Samma kommando.
Så här är filträdet för Btrfs-filsystemet monterat på /data katalog ser ut just nu.
$ tree -a / data
Låt oss ta bort .snapshots / web1-2020-12-25 ögonblicksbild.
$ sudo btrfs subvolume list / data
För att ta bort /data/.snapshots / web1-2020-12-25 ögonblicksbild, kör följande kommando:
$ sudo btrfs subvolume delete / data /.snapshots / web1-2020-12-25
Som du kan se ögonblicksbilden .snapshots / web1-2020-12-25 finns inte längre.
$ sudo btrfs subvolume list / data
Som du kan se filerna / katalogerna för /data/.snapshots / web1-2020-12-25 ögonblicksbild tas bort också.
$ tree -a / data
Slutsats
Den här artikeln har visat dig hur du tar skrivbara och skrivskyddade ögonblicksbilder av dina Btrfs-filsystems delvolymer. Jag har också visat dig hur du uppdaterar en skrivbar ögonblicksbild och återställer filer från en ögonblicksbild. Jag har visat dig hur du tar bort en Btrfs-ögonblicksbild också. Den här artikeln ska hjälpa dig att komma igång med Btrfs-ögonblicksbildfunktionen.