É possível usar o tar para backups completos do sistema?

3

Existe algum bom motivo para não usar o comando tar no diretório raiz para um backup completo do sistema? Alternativamente, existe uma maneira melhor de criar uma cópia completa do seu sistema Linux?

    
por Some Dude From the Internet 17.12.2017 / 00:10

1 resposta

1

Se um backup baseado em tar funciona para você depende do tipo de metadados que você deseja arquivar e qual implementação de tar você está usando.

O GNU tar recentemente adicionou suporte para ACLs do Linux, mas o suporte está com defeito e pode ser que os arquivos sejam extraídos com ACLs que não estão no arquivo, mas foram herdados do diretório pai. Isso pode dar acesso a usuários que não devem ter esse acesso.

Problemas semelhantes se aplicam ao suporte do SELinux no GNU tar.

Se você não confiar nesse tipo de meta-dados e não planejar fazer backups incrementais, poderá usar o tar GNU.

BTW: a versão mais recente de star (em schilytools) adicionou suporte ao SELinux.

As pessoas que acreditam que é possível usar o GNU tar para backups incrementais, devem executar este script para verificar se ele não funciona. Um relatório de bug relacionado foi enviado para os mantenedores do sistema GNU tar em setembro de 2004, em 2011 e em 2016, esse bug é conhecido desde 14 anos:

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
    
por 25.06.2018 / 21:37