是否可以使用 tar 进行完整系统备份?

是否可以使用 tar 进行完整系统备份?

tar是否有任何充分的理由不在根目录上使用该命令进行完整系统备份?或者,是否有更好的方法来创建 Linux 系统的完整副本?

答案1

基于 tar 的备份是否适合您取决于您​​想要归档的元数据类型以及您使用的 tar 实现。

GNU tar 最近添加了对 Linux ACL 的支持,但该支持存在缺陷,可能是使用不在存档中、而是从父目录继承的 ACL 提取文件。这可能会向不应具有此访问权限的用户授予访问权限。

类似的问题也适用于 GNU tar 中的 SELinux 支持。

如果您不依赖这种元数据并且不打算进行增量备份,则可以使用 GNU tar。

顺便说一句:最新版本star(在 schilytools 中)添加了 SELinux 支持。

相信可以使用 GNU tar 进行增量备份的人应该运行此脚本来验证它是否不起作用。相关的 bug 报告已于 2004 年 9 月、2011 年和 2016 年发送给 GNU tar 维护者,这个 bug 已经存在 14 年了:

if [ "$gtar" ]; then
    #
    # Permit: gtar=/tmp/tar-1.30/src/tar sh gnutarfail.sh
    #
    GT=`"$gtar" --help 2> /dev/null | grep GNU`
else
    GT=`gtar --help 2> /dev/null | grep GNU`
    if [ "$GT" ]; then
            gtar=gtar
    else
            # Some systems have "gtar" installed as "tar"
            GT=`tar --help 2> /dev/null | grep GNU`
            if [ "$GT" ]; then
                    gtar=tar
            fi
    fi
fi
if [ -z "$GT" ]; then
    echo No gtar found
    exit 1
fi
echo gtar installed as $gtar
# Preparation complete
#-----------------------------------

cd /tmp
mkdir test.$$
cd test.$$

set -x

mkdir test
mkdir test/dir1
mkdir test/dir2

echo dir1-file > test/dir1/dir1-file
echo dir2-file > test/dir2/dir2-file

$gtar -g/tmp/test.$$/listed-incr -c -f /tmp/test.$$/full.tar test

rm -rf test/dir2
mv test/dir1 test/dir2

$gtar -g/tmp/test.$$/listed-incr -c -f /tmp/test.$$/incremental.tar test

mv test orig

$gtar -x -g/dev/null -f /tmp/test.$$/full.tar
$gtar -x -g/dev/null -f /tmp/test.$$/incremental.tar

相关内容