tar
전체 시스템 백업을 위해 루트 디렉터리에서 이 명령을 사용하지 않는 타당한 이유가 있습니까? 아니면 Linux 시스템의 전체 복사본을 만드는 더 좋은 방법이 있습니까?
답변1
tar 기반 백업이 적합한지 여부는 보관하려는 메타데이터 유형과 사용하는 tar 구현에 따라 다릅니다.
GNU tar는 최근 Linux ACL에 대한 지원을 추가했지만 이 지원에는 결함이 있으며 아카이브에는 없지만 상위 디렉터리에서 상속된 ACL이 있는 파일을 추출할 수 있습니다. 이로 인해 이 액세스 권한이 없어야 하는 사용자에게 액세스 권한이 부여될 수 있습니다.
GNU tar의 SELinux 지원에도 비슷한 문제가 적용됩니다.
이 메타데이터에 의존하지 않고 증분 백업을 수행할 계획이 없다면 GNU tar를 사용할 수 있습니다.
참고: 최신 버전 star
(schilytools)에는 SELinux 지원이 추가되었습니다.
GNU tar를 사용하여 증분 백업을 수행할 수 있다고 믿는 사람은 이 스크립트를 실행하여 작동하지 않는지 확인해야 합니다. 관련 버그 보고서는 2004년, 2011년, 2016년 9월에 GNU tar 관리자에게 전송되었습니다. 이 버그는 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