Como testa tar

1. Como testa tar

Morpheus
Minions

(usa Nenhuma)

Enviado em 07/07/2021 - 13:18h

Se tiver erro na extração do arquivo sai


tar xvf arquivo.tar.xz

if [ "$?" != "0" ]; then

echo "
Saindo ...
"
exit 1

fi


Não esta caindo no bloco if fi . Simulei com nome do arquivo correto e com nome errado. No $? coloquei 0, 1, 2 não rola.




Já coloquei isso e nada:

tar xvf arquivo.tar.xz 2>> "$log"

tar xvf arquivo.tar.xz | tee -a "$log"



  


2. Re: Como testa tar

Matheus Silva
yuminstallcloudz

(usa Arch Linux)

Enviado em 07/07/2021 - 14:24h

você digitou o comando errado amigo.
xvf é um parametro do tar.
parametros devem ser indicado com --parametro(dois hifens para o parametro completo) ou -p(um hifen para a abreviação)
então deveria escrever:
tar -xvf archive.tar.xz 



3. Re: Como testa tar

bruno
leoLeo

(usa Outra)

Enviado em 07/07/2021 - 16:31h

Não eh necessário adicionar o hifen para designar as opções pa umdrões do tar, pelo menos nas implementações do tar que conheço...

Mais fácil vc testar a saida do tar diretamente:


If ! tar xvf arquivo.tar.xz
then
...
fi


O sinal de ! antes do comando inverte a saída do comando, ok?
Entao fica, se o tar falhar, faça...

Lembre-se que em um encanamento, por exemplo com o tee, a saída eh sempre do último comando, ou seja, o tee não vai falhar mesmo que o tar falhe pois ele não depende de nenhum output do tar.. o tee só falha em outras situações.

Pagar pegar todos os sinais de saída de um encanamento, use o array $PIPESTATUS :

[[ "${PIPESTATUS[*]}" = *[1-9]* ]]




4. Re: Como testa tar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/07/2021 - 01:33h

tar -tf arquivo5.tar &> /dev/null && echo ok || echo erro 

ok

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: Como testa tar

Morpheus
Minions

(usa Nenhuma)

Enviado em 11/07/2021 - 23:27h

msoliver escreveu:

tar -tf arquivo5.tar &> /dev/null && echo ok || echo erro 

ok



Essa forma reduzida (tar xvf arquivo.tar.xz &> /dev/null && echo ok || echo erro) funcionou porém:

1- Tem como na parte do erro visualizar a saída do erro do tar?

Testei assim:

tar xvf arquivo.tar.xz &> /tmp/erro.txt && echo "OK" || echo "erro" && cat /tmp/erro.txt && rm -Rf /tmp/erro.txt && exit

Não está caindo no => echo “OK” mais extra o arquivo .tar.xz . Agora se roda o tar com nome errado do arquivo cai no => echo "erro" …


2- Essa exceção para o tar só funciona da forma reduzida do if ou podemos usar a forma ampla?

tar xvf arquivo.tar.xz &> /dev/null

if [ "$?" == "0" ]; then

echo "OK"

else

echo "erro"

fi

Desta forma ampla do if fica melhor para estuda e entender o comando.



6. Re: Como testa tar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/07/2021 - 00:32h


Minions escreveu:

msoliver escreveu:

tar -tf arquivo5.tar &> /dev/null && echo ok || echo erro 

ok



Essa forma reduzida (tar xvf arquivo.tar.xz &> /dev/null && echo ok || echo erro) funcionou porém:

1- Tem como na parte do erro visualizar a saída do erro do tar?

Testei assim:

tar xvf arquivo.tar.xz 2> erro.txt && echo "OK" || { echo "erro" ;cat /tmp/erro.txt; rm -Rf erro.txt;exit;

Não está caindo no => echo “OK” mais extra o arquivo .tar.xz . Agora se roda o tar com nome errado do arquivo cai no => echo "erro" …


2- Essa exceção para o tar só funciona da forma reduzida do if ou podemos usar a forma ampla?

tar xvf arquivo.tar.xz &> /dev/null
if [ "$?" == "0" ]; then
echo "OK"
else
echo "erro"
fi

Desta forma ampla do if fica melhor para estuda e entender o comando.

Minions, boa noite.
Para "verificar" o erro, direcione a saída de ERRO (STDERR), para um arquivo,
Exemplo:
ls arquivo_não_existe 2> erro.txt && echo OK || { echo ERRO;cat erro.txt;} 


Seu comando, provavelmente funcional:
tar xvf arquivo.tar.xz 2> erro.txt && echo "OK" || { echo "erro" ;cat erro.txt; rm -Rf erro.txt;exit;}  


Note que para usar mais de um comando na sintaxe reduzida, coloque entre { }, e os comandos separados por ;

----------------------------------------------------------------------------------------------------------------
2- Essa exceção para o tar só funciona da forma reduzida do if ou podemos usar a forma ampla?
Sim, funciona, mas, sugiro simplificar:
if tar xvf arquivo.tar.xz &> /dev/null; then
echo "OK"
else
echo "erro"
fi
----------------------------------------------------------------------------------------------------------------
Desta forma ampla do if fica melhor para estuda e entender o comando.
É uma questão de gosto....
Para testes simples, prefiro a forma "reduzida"
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________




7. Re: Como testa tar

Morpheus
Minions

(usa Nenhuma)

Enviado em 12/07/2021 - 01:53h

Boa noite msoliver,

Essas formas é valida no uso do if ou pode ter algum problema (uso de recurso de memória e do processador pode ir para 100%)?


if tar -xvf arquivo.tar.xz &> /dev/null; then


if "tar -xvf arquivo.tar.xz &> /dev/null"; then


if `tar -xvf arquivo.tar.xz &> /dev/null`; then


if 'tar -xvf arquivo.tar.xz &> /dev/null'; then


Obs: Tentei direcionar a saída de ERRO (STDERR), para um arquivo não funcionou. Só funcionou da forma acima.

Sabe qual pode ser o motivo?