システム全体のバックアップにtarを使用できますか?

システム全体のバックアップにtarを使用できますか?

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

関連情報