如何在Linux中以示例执行tar增量备份
在本文中,我们将通过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 0
tar增量备份。
级别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"。