一份菜单

如何在Linux上使用快照程序命令创建文件系统快照

快照程序是用于创建和管理文件系统快照的Linux命令行工具。

Using snapper command, you can create read-only snapshots. 您 can use these snapshots to restore specific files or all files during any disaster situation.

您 can also use it to compare multiple snapshots and revert back to a specific old snapshots.

仅在btrfs(B树文件系统写时复制),ext4文件系统和基于精简配置的LVM逻辑卷上支持快照程序。

使用snapper命令拍摄快照时,快照将驻留在同一文件系统中,因此应该有足够的可用空间,并且可能需要定期进行FS清理。

如果您有兴趣使用基于rsync的快照,还应该签出 rsnapshot实用程序 我们之前讨论过的。

安装快照程序实用程序

您 can either download the 鲷鱼二进制 下载并安装源代码并自己编译。

例如,您可以从以下网址下载快照程序rpm SUSE SLES11 SP2存储库.

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

以下是快照程序包的依赖关系。当您使用yum或其他软件包管理工具时,所有依赖关系将自动安装。

  • 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

创建btrfs文件系统

由于SLES11 SP2支持btrfs文件系统,因此可以使用btrfs创建逻辑卷,也可以使用btrfs-convert命令将现有的ext3文件系统转换为btrfs。

执行以下命令以创建新的btrfs文件系统,如果尚未安装btrfs程序,请使用zypper install btrfsprogs进行安装。

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

# mkfs.btrfs /dev/vglocal/snapvol

# mount /dev/vglocal/snapvol /snapmount

创建精简配置的LVM

如果要创建精简配置的LVM,请使用 lvcreate命令 请执行以下操作。

# 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

创建快照程序配置文件

要使用snapper命令创建配置文件,请使用“snapper -c”命令如下所示。

btrfs的语法:

snapper –c  create-config

在btrfs上,您’只需指定配置文件名和挂载点,如下所示。

鲷鱼-c snapconfig create-config /snapmount

精简配置的LVM的语法:

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

在精简配置的LVM上,除了指定配置文件名和安装点外,还应使用以下命令指定文件系统类型–fstype如下图所示:

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

查看和删除快照程序配置文件

创建配置文件后,您将在/ snapmount目录下看到.snapshots目录。

您’还会注意到配置文件是在/ etc / snapper / configs / snapconfig下创建的。有关为快照配置的所有子卷的信息将存储在此文件中。

用于故障排除的日志文件位于/var/log/snapper.log下

要查看所有配置文件,请执行以下snapper命令:

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

要删除配置文件,请使用以下语法:

snapper –c  delete-config

例如,以下命令删除/ etc / snapper / configs目录下的配置文件snapconfig。

# 鲷鱼-c snapconfig delete-config

使用快照程序创建快照

为了创建文件系统的快照,请使用以下snapper命令语法:

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

例如,以下内容将创建一个新快照。

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

一旦您 take a snapshot, view the snapshot information as shown below:

# 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 上  02-24-0354 |

拍摄第二张快照进行比较

出于测试目的,我取消了/ snapmount目录下的testfile1。

# 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

完成上述更改后,让我们进行另一个快照。

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

如下所示,现在我们有两个快照。

# 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 上  02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken 上  02-24-0427 |

比较第一快照和第二快照

现在,让我们比较两个快照。

下面的命令将快照#1与快照#2进行比较。

# 鲷鱼-c snapconfig status 1..2
c.... /snapmount/testfile1

在输出中:

  • “c”输出上的表示内容已被修改。
  • “+”表示将newl文件添加到目录中。
  • “-”表示有一些文件已被删除。

拍摄多个快照并比较输出

我创建了多个测试快照,添加了几个文件,删除了几个文件,并且更改了内容。

# 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 上  02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken 上  02-24-0427 |
single | 3 |       | Mon Feb 24 16:37:53 2014 | root |         | Snapshot taken 上  02-24-0437 |
single | 4 |       | Mon Feb 24 16:38:17 2014 | root |         | Snapshot taken 上  02-24-0440 |

以下输出列出了添加,修改和删除的文件。

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

查看快照之间的差异

现在,要查看快照#1和快照#4之间文件中特定的内容差异,可以使用以下命令。

# 鲷鱼-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

输出采用diff命令输出的典型格式。

从快照还原特定文件

一旦您’我们已经了解了快照之间的差异,并且知道要还原的特定文件,可以按照此处的说明进行还原。

在还原之前,我们不’将testfile2包含在此列表中。

# 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

例如,要从快照还原单个文件,即从快照1还原/ snapmount / testfile2(已删除的文件),请使用以下命令:

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

还原后,我们会在列表中看到testfile2。

# 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

从快照还原所有文件

要从快照还原所有文件,请执行以下操作:

现在,让我们从特定的快照还原所有文件。请注意,这是如何删除几个文件,创建文件和修改文件的。

# 鲷鱼-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

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 2 评论… 加一 }

  • 史蒂芬 2014年3月13日,上午5:19

    怎样做类似的文章来显示快照命令和ZFS中的tank发送/接收相结合?

  • 里诺 2015年1月21日,上午5:00

    好文章,谢谢! ðŸ™,

发表评论