倒转:从快照后到快照前的更改
要撤消从快照后到快照前的更改,例如:要恢复测试文件,请使用snaper undochange命令。
# snapper -c myvol1_snap undochange 1..2 create:1 modify:0 delete:0
检查确认
# ls /myvol1 lost+found test_file
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 | | |
快照类型
我们可以使用 snapper 创建三种类型的快照:
pre:用于记录卷修改前的状态。
前快照应始终具有相应的后快照。
post:用于记录卷修改后的状态。
single:这些快照与其他快照没有特殊关系。