GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit snímky systému souborů pomocí příkazu Snapper v systému Linux

Snapper je nástroj příkazového řádku Linuxu pro vytváření a správu snímků vašich souborových systémů.

Pomocí příkazu snapper můžete vytvářet snímky pouze pro čtení. Tyto snímky můžete použít k obnovení konkrétních souborů nebo všech souborů během jakékoli havárie.

Můžete jej také použít k porovnání více snímků a vrátit se zpět ke konkrétním starým snímkům.

Snapper je podporován pouze na btrfs (systémy souborů B-strom kopírování při zápisu), souborových systémech ext4 a tenkých- zřízené logické svazky založené na LVM.

Když je snímek pořízen pomocí příkazu snapper, bude umístěn ve stejném souborovém systému, takže by mělo být k dispozici dostatek volného místa a může být vyžadováno pravidelné čištění FS.

Pokud máte zájem o použití snímku založeného na rsync, měli byste se také podívat na nástroj rsnapshot, o kterém jsme hovořili dříve.

Nainstalujte nástroj Snapper

Můžete si buď stáhnout binární soubor snapper pro různé distribuce a nainstalovat jej, nebo si stáhnout zdrojový kód a zkompilovat jej sami.

Můžete si například stáhnout otáčky snapperu z úložiště SUSE SLES11 SP2.

# rpm -ivh snapper-0.1.6-2.1.x86_64.rpm

Níže jsou uvedeny závislosti pro balíček snapper. Když použijete yum nebo jiné nástroje pro správu balíčků, všechny závislosti se nainstalují automaticky.

  • libsnapper-devel-0.1.6-2.1.x86_64.rpm
  • pam_snapper-0.1.6-2.1.x86_64.rpm
  • snapper-debuginfo-0.1.6-2.1.x86_64.rpm
  • snapper-debugsource-0.1.6-2.1.x86_64.rpm

Vytvořit souborový systém btrfs

Vzhledem k tomu, že btrfs je podporovaný souborový systém od SLES11 SP2, můžete použít btrfs k vytvoření logického svazku nebo použít příkazy btrfs-convert k převodu vašeho stávajícího souborového systému ext3 na btrfs.

Pro vytvoření nového souborového systému btrfs spusťte následující příkazy. Pokud nemáte nainstalovaný program btrfs, použijte k jeho instalaci zypper install btrfsprogs.

# lvcreate -L 8G -n snapvol vglocal
Logical volume "snapvol" created

# mkfs.btrfs /dev/vglocal/snapvol

# mount /dev/vglocal/snapvol /snapmount

Vytvoření tenkého LVM

Pokud chcete vytvořit tenký LVM, použijte příkaz lvcreate k následujícímu.

# lvcreate --thin vglocal/vgthinpool --size 20G
  Rounding up size to full physical extent 32.00 MiB
  Logical volume "vgthinpool" create

# lvcreate --thin vglocal/vgthinpool --virtualsize 8G --name lvthin_snap
  Logical volume "lvthin_snap" created

# lvs
  LV          VG        Attr      LSize   Pool       Origin Data%  Move Log Copy%  Convert
  opt         vglocal -wi-ao---   2.73g
  tmp         vglocal -wi-ao---   2.73g
  usr_local   vglocal -wi-ao---   2.73g
  var         vglocal -wi-ao---   2.73g
  lvthin_snap vglocal  Vwi-a-tz-   8.00g vgthinpool          0.00
  vgthinpool  vglocal  twi-a-tz-  20.00g                     0.00

# mkfs.ext3 /dev/vglocal/lvthin_snap

# mkdir /snapmount

# mount /dev/vglocal/lvthin_snap /snapmount

Vytvořte konfigurační soubor aplikace Snapper

Chcete-li vytvořit konfigurační soubor pomocí příkazu snapper, použijte příkaz „snapper -c“, jak je uvedeno níže.

Syntaxe na btrfs:

snapper –c  create-config

Na btrfs stačí zadat název konfiguračního souboru a bod připojení, jak je uvedeno níže.

snapper -c snapconfig create-config /snapmount

Syntaxe na tenkém LVM:

snapper –c  create-config --fstype="lvm(xfs)"

Na tenkém LVM byste měli kromě zadání konfiguračního souboru a bodu připojení také zadat typ souborového systému pomocí –fstype, jak je uvedeno níže:

snapper -c snapconfig1 create-config --fstype="lvm(xfs)" /snapmount1

Zobrazení a odstranění souborů konfigurace aplikace Snapper

Po vytvoření konfiguračních souborů uvidíte adresář .snapshots vytvořený v adresáři /snapmount.

Také si všimnete, že konfigurační soubor je vytvořen v /etc/snapper/configs/snapconfig. V tomto souboru budou uloženy informace o celém dílčím svazku, který je nakonfigurován pro snímek.

Soubor protokolu používaný pro účely odstraňování problémů se nachází pod /var/log/snapper.log

Chcete-li zobrazit všechny konfigurační soubory, spusťte následující příkaz snapper:

# snapper list-configs
Config      	| 	Subvolume
------------+------------
snapconfig  	| 	/snapmount         ? btrfs filesystem
snapconfig1 	| 	/snapmount1       ? Thin provisioned filesystem

Chcete-li odstranit konfigurační soubor, použijte následující syntaxi:

snapper –c  delete-config

Například následující příkaz odstraní konfigurační soubor snapconfig v adresáři /etc/snapper/configs.

# snapper -c snapconfig delete-config

Vytvořte snímek pomocí aplikace Snapper

Chcete-li vytvořit snímek systému souborů, použijte následující syntaxi příkazu snapper:

snapper –config  create –description "description of the snapshot"

Například následující pořídí nový snímek.

# snapper --config snapconfig create --description "Snapshot taken on 02-24-0354"

Jakmile pořídíte snímek, zobrazte informace o snímku, jak je uvedeno níže:

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |

Pořiďte 2. snímek pro srovnání

Pro účely testování jsem vynuloval testfile1 v adresáři /snapmount.

# cat /dev/null > testfile1

# ls -ltr
-rw-r--r-- 1 root root 11 Feb 24 11:28 testfile2
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
drwxr-x--- 1 root root  2 Feb 24 15:57 .snapshots
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1

Po výše uvedené změně pořídíme další snímek.

# snapper --config snapconfig create --description "Snapshot taken on 02-24-0427"

Jak vidíte níže, nyní máme dva snímky.

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken on 02-24-0427 |

Porovnejte 1. a 2. snímek

Nyní porovnejme oba snímky.

Níže uvedený příkaz porovná snímek#1 se snímkem#2.

# snapper -c snapconfig status 1..2
c.... /snapmount/testfile1

Ve výstupu:

  • „c“ na výstupu znamená, že obsah byl změněn.
  • „+“ znamená, že do adresáře byly přidány nové soubory.
  • „-“ znamená, že existují soubory, které byly smazány.

Pořídit více snímků a porovnat výstup

Vytvořil jsem několik testovacích snímků s několika přidanými soubory, několika odstraněnými soubory a několika změnami obsahu.

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken on 02-24-0427 |
single | 3 |       | Mon Feb 24 16:37:53 2014 | root |         | Snapshot taken on 02-24-0437 |
single | 4 |       | Mon Feb 24 16:38:17 2014 | root |         | Snapshot taken on 02-24-0440 |

Následující výstup obsahuje seznam souborů, které byly přidány, upraveny a odstraněny.

# snapper -c snapconfig status 4..1
-.... /snapmount/a
-.... /snapmount/b
-.... /snapmount/c
c.... /snapmount/testfile1
+.... /snapmount/testfile2

Zobrazit rozdíl mezi snímky

Chcete-li nyní zobrazit konkrétní rozdíl obsahu v souboru mezi snímkem č. 1 a snímkem č. 4, můžete použít následující příkaz.

# snapper -c snapconfig diff 4..1 /snapmount/testfile1
--- /snapmount/.snapshots/4/snapshot/testfile1  2014-02-24 16:25:44.416490642 -0500
+++ /snapmount/.snapshots/1/snapshot/testfile1  2014-02-24 11:27:35.000000000 -0500
@@ -0,0 +1 @@
+This is a test file

Výstup je v typickém formátu výstupu příkazu diff.

Obnovení konkrétního souboru ze snímku

Jakmile uvidíte rozdíly mezi snímky a víte, jaký konkrétní soubor chcete obnovit, můžete jej obnovit, jak je vysvětleno zde.

Před obnovením nemáme v tomto seznamu testovací soubor2.

# ls -ltr
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1
drwxr-x--- 1 root root 10 Feb 24 16:45 .snapshots

Chcete-li například obnovit jeden soubor ze snímku, tj. /snapmount/testfile2 (soubor, který byl odstraněn) ze snímku č. 1, použijte níže uvedený příkaz:

# snapper -c snapconfig -v undochange 1..4 /snapmount/testfile2
create:1 modify:0 delete:0
creating /snapmount/testfile2

Po obnovení vidíme v seznamu testovací soubor2.

# ls -ltr
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1
drwxr-x--- 1 root root 10 Feb 24 16:45 .snapshots
-rw-r--r-- 1 root root 11 Feb 24 16:55 testfile2

Obnovit všechny soubory ze snímku

Chcete-li obnovit všechny soubory ze snímku, proveďte následující:

Nyní obnovíme všechny soubory z konkrétního snímku. Všimněte si, jak to je smazání několika souborů, vytvoření souboru a úprava souboru.

# snapper -c snapconfig -v undochange 1..4
create:1 modify:1 delete:3
deleting /snapmount/c
deleting /snapmount/b
deleting /snapmount/a
modifying /snapmount/testfile1
creating /snapmount/testfile2

Linux
  1. Jak vytvořit souborový systém na linuxovém oddílu nebo logickém svazku

  2. Jak vytvořit skript příkazu Linux

  3. Jak restartovat Linux pomocí příkazového řádku

  1. Příkaz Linux ln

  2. Jak zabít proces v Linuxu pomocí příkazu?

  3. Jak vytvořit snímek tenkých svazků LVM pomocí příkazu snapper

  1. Jak vytvořit soubor v Linuxu pomocí terminálu/příkazového řádku

  2. Jak vytvořit uživatele Linuxu pomocí Ansible

  3. Jak vytvořit řídké soubory v Linuxu pomocí příkazu „dd“.