倒转:从快照后到快照前的更改

要撤消从快照后到快照前的更改,例如:要恢复测试文件,请使用snaper undochange命令。

# snapper -c myvol1_snap undochange 1..2 
create:1 modify:0 delete:0

检查确认

# ls /myvol1
lost+found
test_file
如何使用 snapper 命令创建 LVM thin卷的快照

Snapper 是 Linux 中的命令行实用程序,用于创建和管理 LVM 瘦卷的快照。
它可以创建、删除和比较快照并恢复快照之间所做的更改。
Snapper 还允许轻松创建和管理 Btrfs 的快照。

2. 创建 snapper 配置文件

要使用 snapper 创建快照,LVM 精简卷或者 Btrfs 子卷需要一个配置文件。
LVM 和 Btrfs 卷还必须有一个挂载的文件系统。
使用 create-config 命令创建配置文件。
以下示例为挂载在 /myvol1 上的 LVM ext4 文件系统创建一个名为 myvol_snap 的配置文件:

# snapper -c myvol1_snap create-config -f "lvm(ext4)" /myvol1

此命令向 /etc/sysconfig/snapper 添加一个条目。

此命令创建 /etc/snapper/configs/myvol1_snap 配置文件。

此命令在 /myvol1 目录中创建一个 .snapshots 目录。

# cat /etc/sysconfig/snapper 
... 
SNAPPER_CONFIGS=”myvol1_snap”
# cat /etc/snapper/configs/myvol1_snap ...
# subvolume to snapshot SUBVOLUME=”/myvol1”
# filesystem type
FSTYPE=”lvm(ext4)”
...
# start comparing pre- and post-snapshot in background after... BACKGROUND_COMPARISON=”yes”
# run daily number cleanup
NUMBER_CLEANUP=”yes”
...
# create hourly snapshots
TIMELINE_CREATE=”yes”
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP=”yes”
...
# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP=”yes”
...

/myvol1 文件系统的快照存储在 .snapshots 子目录中。

# ls -la /myvol1
...
drwxr-x--- ... .snapshots
...

1. 创建精简配置的逻辑卷

使用 lvcreate 命令创建名为 Thinvol1 的精简配置卷。
请注意,在我们使用 snapper 命令创建快照之前,需要安装此卷。

# vgs
VG      #PV #LV  #SN  Attr     VSize      VFree
myvolg  1    0    0   wz--n-   1020.00m   1020.00m

创建一个精简池:

# lvcreate -v -L 100m -T myvolg/mythinpool 
...
  Logical volume “mythinpool” created

创建精简配置卷:

# lvcreate -v -V 200m -T myvolg/mythinpool -n thinvol1 
...
  Logical volume “thinvol1” created

在精简卷上创建文件系统。

# mkfs.ext4 /dev/myvolg/thinvol1
...
Writing superblocks and filesystem accounting information: done

挂载文件系统:

# mkdir /myvol1
# mount /dev/myvolg/thinvol1 /myvol1

3. 创建快照

在 /myvol1 目录中创建一些测试文件。

# echo "This is a test file" > /myvol1/test_file

使用 snapper create -t pre 创建 myvol1_snap 配置文件定义的卷的预快照。
包括 -p 选项以显示正在创建的快照的编号。
(在本例中,预快照编号为 1)

# snapper -c myvol1_snap create -t pre -p
1

快照按快照编号存储在卷的 .snapshots 子目录中。
查看 /myvol1/.snapshots 目录的内容。

# ls -l /myvol1/.snapshots 
...
drwxr-xr-x ... 1

查看 /myvol1/.snapshots/1 目录的内容。

# ls -l /myvol1/.snapshots/1 
...
-rw-------    ...     info.xml 
drwxr-x---    ...     snapshot

现在通过删除 test_file 来修改 /myvol1 目录的内容。

# rm /myvol1/test_file

使用 snapper create -t post 创建 myvol1_snap 配置文件定义的卷的 post 快照。
包括 -pre-num 1 选项以将此后快照与前快照 1 相关联。
包括 -p 选项以显示正在创建的快照的编号。

# snapper -c myvol1_snap create -t post --pre-num 1 -p 
2

我们将看到在 .snapshots 目录中创建了一个新目录名称 2.

# ls -l /myvol1/.snapshots/2 
...
-rw------- ... filelist-1.txt 
-rw------- ... info.xml 
drwxr-x--- ... snapshot

filelist-1.txt 包含在前快照之后和后快照之前被删除的文件。

# cat /myvol1/.snapshots/2/filelist-1.txt 
-..... /test_file

安装snapper

使用 yum 命令安装 snapper 软件包。

# yum install snapper
...
Transaction Summary ============================================================= 
Install 1 Package (+3 Dependent packages)
Total download size: 499 k Installed size: 1.5 M
Is this ok [y/d/N]: y
...
Complete!

使用 rpm -ql 命令查看 snapper 包提供的文件。

# rpm -ql snapper
/etc/cron.daily/snapper 
/etc/cron.hourly/snapper 
/etc/dbus-1/system.d/org.opensus.Snapper.conf 
/etc/logrotate.d/snapper
/usr/bin/snapper
/usr/sbin/snapperd /usr/share/dbus-1/system-services/org.opensus.Snapper.service 
...

请注意两个 cron snapper 文件。

  • 默认情况下,snapper 设置一个 cron.hourly 作业以在卷的 .snapshots 子目录中创建快照,并设置一个 cron.daily 作业来清理旧快照。
  • 我们可以将配置文件编辑为禁用或者更改此行为。

比较前后快照

使用 snapper status 命令显示在快照前 1 和快照后 2 之间添加、删除或者修改的文件和目录。

# snapper -c myvol1_snap status 1..2
-..... /test_file

使用 snapper diff 命令显示快照前 1 和快照后 2 中文件内容之间的差异。

# snapper -c myvol1_snap diff 1..2
Binary files /myvol1/.snapshots/1/snapshot/test_file and /myvol1/.snapshots/2/snapshot/test_file differ

使用 snapper list 命令列出由 myvol1_snap 配置文件定义的卷存在的快照。

# snapper -c myvol1_snap list
Type  | # | Pre # | Date | User | Cleanup |Description| Userdata
------+---+-------+------+------+---------+------------+-------
single| 0 |       | ...  | root |         |  Current  |
pre   | 1 |       | ...  | root |         |	      |
post  | 2 |   1   | ...  | root |         |           |
欢迎来到之路教程(on itroad-com)

快照类型

我们可以使用 snapper 创建三种类型的快照:
pre:用于记录卷修改前的状态。
前快照应始终具有相应的后快照。

post:用于记录卷修改后的状态。

single:这些快照与其他快照没有特殊关系。

日期:2020-09-17 00:13:28 来源:oir作者:oir