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

4

Por padrão, para muitos tipos de erro tar imprime uma mensagem para stderr e continua em seu caminho - os erros que chama de erros "recuperáveis", geralmente erros relacionados a um único arquivo ou membro do arquivo, como permissões problemas.

À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

que pode continuar por milhares de linhas em um grande arquivo. Se isso acontecer em um script, eu prefiro que tar apenas tenha saído prontamente para que eu possa dar um erro ao usuário.

Existe alguma maneira de forçar o tar a sair no primeiro erro que ele vir? Eu não vejo isso em uma varredura de tar --help . Qualquer receita sã para um script wrapper para realizar este propósito também seria aceita com gratidão.

    
por Greg Price 30.05.2012 / 03:18

1 resposta

4

Uma maneira é redirecionar a saída do erro padrão para /dev/full , por exemplo:

tar ... 2>/dev/full

Isso fará com que o tar falhe quando tentar enviar uma mensagem de aviso para stderr .

    
por 30.05.2012 / 10:04