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