tar: Saindo com status de falha devido a erros anteriores

64

Eu escrevi um pequeno script que tars e comprime uma lista de diretórios + arquivos.

O script parece executado com sucesso, na medida em que um arquivo .tar.gz utilizável é criado após a execução do script.

No entanto, recebo esta mensagem irritante após o script terminar:

tar: Exiting with failure status due to previous errors

Não vejo mensagens de erro enquanto o script está funcionando e, como eu disse, o arquivo produzido pode ser descompactado sem avisos / erros. Como estou usando isso como parte do meu backup, quero ter certeza de que não estou ignorando algo sério.

Quais são os possíveis motivos pelos quais esta mensagem de erro / aviso está sendo produzida - e posso ignorá-la com segurança? Se eu não puder ignorá-lo, quais são as etapas para diagnosticar e resolver o erro?

Estou executando no Ubuntu 10.0.4

    
por morpheous 29.07.2010 / 09:17

7 respostas

81

Você receberá essa mensagem se, por algum motivo, o tar não puder adicionar todos os arquivos especificados ao tar. Um se o mais comum não é ter permissão de leitura em um dos arquivos. Isso pode ser um grande problema, já que você está usando isso para backup. Se você estiver usando o sinalizador -v , tente desativá-lo. Isso deve reduzir a saída e permitir que você veja o que está acontecendo.

    
por 29.07.2010 / 13:22
18

o problema é o argumento f argumento pega o próximo como o nome do arquivo, então deve ser o último argumento

tar cvzf output.tgz folder

ou

tar -cvzf output.tgz folder

é o mesmo e não tem erro.

    
por 28.01.2013 / 10:21
5

Às vezes, o backup de arquivos que podem mudar durante o backup, como arquivos de log, você pode achar útil a opção tar '--ignore-failed-read' (estou no Debian Linux, não tenho certeza se não gnu tar).

A saída e o erro padrão podem ser redirecionados em dois arquivos diferentes com algo como:

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

Eu acho que isso geralmente é seguro, mas por favor, tome cuidado, pois o alcatrão não vai parar ...

    
por 17.01.2014 / 13:24
3

Eu tive o mesmo problema. Tudo que fiz foi remover o traço ("-") do comando.

Em vez de digitá-lo como

tar -cvfz output.tar.gz folder/

tente digitá-lo como

tar cvfz output.tar.gz folder/

Eu não sei por que o traço estava causando problemas no meu caso, mas pelo menos funcionou.

    
por 11.09.2011 / 01:06
3

Eu estava tendo o mesmo problema e nenhuma das respostas acima funcionou para mim. No entanto, descobri que a execução do seguinte comando funcionou:

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

Os erros que estavam sendo referenciados em tar: Exiting with failure status due to previous errors podem ser identificados ao desativar a opção -v. Após a revisão, os erros vieram de diretórios como /run e /sys .

Ao excluir esses diretórios, tudo funciona bem. Espero que isso ajude alguém com um problema semelhante.

    
por 10.10.2016 / 17:03
1

Você entendeu mal uma resposta anterior. O problema não é o - , é onde o f está na sua lista de argumentos.

tar cvfz target.tgz <files>

Tentará criar um arquivo chamado "z", que é o texto depois de f . A mensagem de erro é porque o tar não pode encontrar "target.gz" para adicionar ao arquivo "z".

tar cvzf target.tgz <files>

Criará corretamente o target.tgz e adicionará arquivos a ele. Isso ocorre porque target.tgz é o primeiro texto após o argumento f .

    
por 19.10.2013 / 09:52
0

Normalmente, você pode ignorar essa mensagem. Se houver alguma alteração (como exclusões / criações / modificações de arquivos) na árvore de diretórios subjacente durante a criação do tar, ela será emitida. Além disso, se houver arquivos especiais, como nós de dispositivos, fifos e assim por diante, eles causarão esse aviso.

Tem certeza de que não consegue ver nenhum arquivo culpado? Experimente com tar cvfz yourtarball.tgz /your/path

    
por 29.07.2010 / 09:26