Ao extrair arquivos, se o tar descobrir que o arquivo extraído já existe, ele normalmente substitui o arquivo removendo-o antes de extraí-lo, para evitar confusão na presença de links físicos ou simbólicos. (Se o arquivo existente for um link simbólico, ele será removido, não seguido.) No entanto, se um diretório não puder ser removido porque não está vazio, o tar normalmente substitui seus metadados (propriedade, permissão, etc.). A opção --overwrite-dir
ativa esse comportamento padrão. Para ser mais cauteloso e preservar os metadados de tal diretório, use a opção --no-overwrite-dir
.
Para ser ainda mais cauteloso e impedir a substituição de arquivos existentes, use a opção --keep-old-files (-k)
. Isso faz com que o tar se recuse a substituir ou atualizar um arquivo que já existe, ou seja, um arquivo com o mesmo nome de um membro do arquivo impede a extração desse membro do arquivo. Em vez disso, ele informa um erro. Por exemplo:
$ ls
blues
$ tar -x -k -f archive.tar
tar: blues: Cannot open: File exists
tar: Exiting with failure status due to previous errors