Erro ao lidar com a opção tar e keep-old-files

2

Estou descompactando arquivos tar com a opção --keep-old-files para não danificar arquivos que já estão lá. O irritante é que isso faz com que o tar produza um código de erro # 2 (erro fatal) quando um arquivo já está lá.

A razão pela qual é importante para mim que isso não seja considerado um erro é porque meu script registra quando um arquivo é descompactado com êxito e, em seguida, usa esse log para não descompactar novamente esse arquivo tar.

Eu poderia simplesmente ignorar este erro completamente, não registrar, e confiar que nenhum arquivo será sobrescrito, mas há dois problemas com isso: ele gera muitas mensagens de erro, e há muitos arquivos, então é ineficiente para mim abra tar uma vez para cada arquivo.

Existe alguma maneira de usar arquivos --keep-old, ignorar os erros gerados por arquivos existentes e não ignorar outros erros?

    
por Angelo 17.09.2013 / 22:54

1 resposta

5

Isso é aparentemente por design - da documentação :

To be even more cautious and prevent existing files from being replaced, use the --keep-old-files (-k) option. It causes tar to refuse to replace or update a file that already exists, i.e., a file with the same name as an archive member prevents extraction of that archive member. Instead, it reports an error.

O repositório git contém um patch que introduz um parâmetro --skip-old-files , então isso pode ser resolvido em uma futura versão do GNU tar :

+A new option --skip-old-files is introduced, which acts exactly as
+--keep-old-files, except that it does not treat existing files as
+errors.  Instead it just silently skips them.  An additional level of
+verbosity can be obtained by using the option --warning=existing-file
+together with this option.

O patch ainda não foi lançado em um lançamento oficial .

    
por 17.09.2013 / 23:57

Tags