Código de saída do Tar diferente de zero

3

Estou tentando criar um script de backup que crie um tarball completo do meu sistema a cada noite. Para fazer isso, eu segui o tutorial aqui .

Então, para testar, decidi criar um backup manual:

tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 

Quando tento executar este comando, recebo o erro:

tar: /run/: file is on a different filesystem; not dumped

Isso resulta em um código de saída 1. No entanto, eu quero executar este comando em um script e se o código de retorno for 0 , eu quero mover o arquivo de saída, caso contrário, excluí-lo. Se eu entendi corretamente a partir do tutorial vinculado acima o --one-file-system implica que /run/ é ignorado. Mas por que eu recebo o erro então?

Para completar, o script (WIP) é mostrado abaixo:

#!/bin/bash

# Location to store backups
STORAGE=/media/storage/backups/full
# Current date
DATE=$(date +"%d.%m.%YT%H.%M")
TAR="$DATE.tar.gz"


# Check if the file already exists. Should never be the case though.
if [ ! -f /tmp/$TAR ]; then

    echo "Changing dir to /"
    cd /
    # Create tarball
    echo "Creating tarball"
    tar -cvpzf /tmp/$TAR --exclude=/tmp/$TAR --one-file-system /
    retcode=$?

    echo "Exit status: $retcode"

    if [ $retcode = 0 ] ; then
        echo "Moving file.."
        # Move the file
        mv /tmp/$TAR $STORAGE/$TAR
        echo "Done!"
    fi
fi
    
por Christophe De Troyer 02.12.2014 / 12:56

1 resposta

1

Você deve declarar --one-file-system primeiro antes da regra de exclusão. Há uma nota do mesmo guia que você seguiu.

  

Se você quiser excluir todas as outras montagens que não sejam as atuais -   isto quero dizer partições montadas em diretórios - em seguida, use o   - uma opção do sistema de arquivos anexada antes das regras de exclusão. Isto tem o efeito de impedir o alcatrão de se cruzar em quaisquer outras montagens em qualquer   diretório incluindo / mnt ou / media.

    
por f01 02.12.2014 / 13:05

Tags