O tar pode ser forçado a sair no primeiro erro?

O tar pode ser forçado a sair no primeiro erro?

Por padrão, para muitos tipos de erros tarimprime 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 tarsair imediatamente para poder fornecer um erro imediato ao usuário.

Existe alguma maneira de forçar tara 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.

informação relacionada