如何在Linux中以示例执行tar增量备份

时间:2020-02-23 14:40:34  来源:igfitidea点击:

在本文中,我们将通过Linux中的示例学习有关tar增量备份的所有信息。
无论是在IT行业中,还是在任何实际进行备份的行业中,无处不在。
没有备份我们就无法生存。

现在,想象一下存储此类备份数据所占用的空间类型,因此,最好有一个增量备份来节省空间并仅备份已更改的数据。

在本文中,将介绍一些示例来执行tar增量备份。
我们可以将此解决方案与某些脚本集成在一起,以自动执行增量备份。

tar是一个著名的存档工具,可以用于多种用途,但是我们其中将重点介绍tar增量备份功能。

我将分步分发任务和验证

  • 创建一些数据

  • 进行0级增量备份

  • 进行一些数据更改

  • 进行1级增量备份

  • 删除数据源

  • 从tar增量备份中恢复数据

tar增量备份如何执行

  • tar使用元数据文件存储有关源目录的信息

  • 我们可以使用--listed-incremental = <file>来定义有关此元数据文件,其中file是元数据文件

  • 此文件也可以称为快照文件

  • 该文件的目的是帮助确定自上次备份以来已更改,添加或者删除了哪些文件,以便下一次增量备份将仅包含已修改的文件。

让我们通过一些示例来了解tar增量备份:

第1步:创建一些数据

我有一个目录"/tmp/data",其中保留了一些文件,如下所示:

[root@server1 tmp]# ls -l data/
total 60
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file1
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file2
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file3
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file4
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file5

进行0级增量备份

我敢肯定,我们一定想知道level 0tar增量备份。
级别0是源目录的第一个副本,该副本将存储在我们的快照文件中。
默认情况下,如果不存在与--listed-incremental一起使用的快照文件,则将其视为级别0或者其他方式,也可以使用--level = 0来指定。

在下面的例子中

  • 我们将使用/root/metadata/data.sngz作为当前尚不存在的快照文件,因此这将是我们的0级tar增量备份

  • 我们将备份/tmp/data目录

  • 归档文件" data.tgz"将存储在"/tmp"下,并使用gzip压缩文件进行归档

  • 我们添加了两次详细操作,以在活动屏幕上获得更多详细信息。

提示:

我们还可以使用任何其他受支持的压缩算法(例如bzip2(--bzip2),xz(--xz)等)来创建档案。

我们可以查看tar的手册页以获取更多受支持选项的列表

[root@server1 tmp]# tar --verbose --verbose --create --gzip --listed-incremental=/root/metadata/data.sngz --file=data.tgz data
tar: data: Directory is new
drwxr-xr-x root/root         0 2017-02-08 11:23 data/
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file1
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file2
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file3
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file4
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file5

其中

-z| --gzip                         filter the archive through gzip
-g| --listed-incremental=FILE      handle new GNU-format incremental backup
-c| --create                       create a new archive
-f| --file=ARCHIVE                 use archive file or device ARCHIVE
-v| --verbose                      verbosely list files processed

如我们所见,新目录与源目录中的其他文件一起添加到了快照文件中

我们可以使用以下命令查看存档中增量数据的内容

[root@server1 tmp]# tar --list --incremental --verbose --verbose --file data.tgz
drwxr-xr-x root/root        36 2017-02-08 11:23 data/
Y file1
Y file2
Y file3
Y file4
Y file5
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file1
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file2
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file3
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file4
-rw-r--r-- root/root     10240 2017-02-08 11:23 data/file5

对于存档中的每个目录,此命令将在创建存档时打印该目录中文件的列表。
此信息以一种人类可读且对程序无歧义的格式输出:每个文件名都打印为

x file

其中," x"是描述文件状态的字母:" Y"(如果档案中存在文件);" N"(如果档案中不包含文件)或者" D"如果文件是目录(并且包含在存档中)

进行一些资料变更

现在,为了演示tar增量备份,我们将在源目录中进行一些更改

[root@server1 tmp]# rm -f data/file5
[root@server1 tmp]# fallocate -l 10K data/file6

因此,e已删除file5,并在/tmp/data下添加了新的file6

进行1级增量备份

现在是时候进行下一级增量备份了。
如我们所见,我使用了相同的快照文件/root/metadata/data.sngz,但是我正在创建一个新的存档数据1.gz

[root@server1 tmp]# tar --verbose --verbose --create --gzip --listed-incremental=/root/metadata/data.sngz --file=data.1.tgz data
drwxr-xr-x root/root         0 2017-02-08 11:27 data/
-rw-r--r-- root/root     10240 2017-02-08 11:27 data/file6

创建级别0的增量备份后,此新存档将仅包含最近的更改。

[root@server1 tmp]# tar --list --incremental --verbose --verbose --file data.1.tgz
drwxr-xr-x root/root        36 2017-02-08 11:27 data/
N file1
N file2
N file3
N file4
Y file6
-rw-r--r-- root/root     10240 2017-02-08 11:27 data/file6

如我们所见,缺少" file5",而将" file6"添加为Y

删除数据源

现在,要验证我们的tar增量备份,我们将手动删除源数据

[root@server1 tmp]# rm -rf data

使用tar增量备份恢复数据

现在,我们将尝试使用tar增量备份来恢复已删除的数据。
在下面的示例中,我们首先提取0级数据,因为我们需要源数据的基础

[root@server1 tmp]# tar --extract  --listed-incremental=/dev/null --file data.tgz

因此,现在我们有了源数据:

[root@server1 tmp]# ls -l data/
total 60
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file1
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file2
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file3
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file4
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file5

接下来,我们将提取1级tar增量备份,这将在源数据目录中进行其他更改:

[root@server1 tmp]# tar --extract  --listed-incremental=/dev/null --file data.1.tgz

验证更改:

[root@server1 tmp]# ls -l data/
total 60
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file1
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file2
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file3
-rw-r--r--. 1 root root 10240 Nov  8 11:23 file4
-rw-r--r--. 1 root root 10240 Nov  8 11:27 file6

因此,正如预期的那样,从我们的1级tar增量备份中删除了" file5",并添加了" file6"。