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