Por padrão, para muitos tipos de erros tar
imprime uma mensagem para stderr e depois continua seu caminho - os erros que ele chama de erros "recuperáveis", normalmente erros relacionados a um único arquivo ou membro de arquivo, como problemas de permissão.
Às vezes, esse comportamento é realmente desagradável. Por exemplo, se eu estiver descompactando um arquivo e o disco estiver cheio, posso obter algo assim:
tar: python-lib/PyML/classifiers/ext/_cgist.so: Wrote only 2048 of 10240 bytes
tar: python-lib/PyML/classifiers/ext/_csmo.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_csvmodel.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_knn.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_libsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_mylibsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/cgist.py: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/csmo.py: Cannot write: No space left on device
isso pode durar milhares de linhas em um grande arquivo. Se isso acontecer em um script, prefiro tar
sair imediatamente para poder fornecer um erro imediato ao usuário.
Existe alguma maneira de forçar tar
a saída no primeiro erro que encontrar? Eu não vejo isso em uma varredura de tar --help
. Qualquer receita sensata de um script wrapper para atingir esse propósito também seria aceita com gratidão.
Responder1
Uma maneira é redirecionar a saída de erro padrão para /dev/full
, por exemplo:
tar ... 2>/dev/full
Isso fará com que o tar falhe ao tentar enviar uma mensagem de aviso para o arquivo stderr
.