1. tar will not screw up something on the source dir/subdirs
True, a menos que você considere a atualização dos tempos de acesso como estragar. Além disso, o tar não altera nada na árvore de código.
2. tar will add to archive as it found in the moment of building archieve
Verdade, por algum valor de "no momento". Se a árvore de origem mudar enquanto o tar estiver lendo, o que está incluído no arquivo é um tanto imprevisível. Em particular, se um arquivo for alterado enquanto o tar estiver lendo, não há garantia de que o tar gravará uma cópia do arquivo como foi em algum momento. Por exemplo, é possível ter:
- tar lê bytes 0 a 4095 de
foo
. - Alguns programas gravam em
foo
, alterando os bytes 4095–4096 em uma única operação de gravação. - tar lê bytes 4096–8191 de
foo
.
Em seguida, o conteúdo de foo
no arquivo não é o conteúdo antigo nem o novo, é uma mistura dos dois. Outro exemplo é que, se um arquivo for renomeado enquanto o tar estiver lendo a árvore de origem, o tar poderá ignorá-lo completamente.
3 . success signal will be emitted even if described changes occurred
Não, não necessariamente. Se o tar detecta que a fonte mudou enquanto está lendo, pode reclamar e retornar um status de falha. Em particular, o tar precisa gravar o tamanho de um arquivo no archive antes de gravar o conteúdo, para que ele leia o tamanho de cada arquivo de origem primeiro. Se ele chegar ao final do arquivo antes de atingir o tamanho registrado, não há nenhuma maneira óbvia de recuperar, portanto, qualquer implementação de tar deve reclamar, pelo menos, nesse caso.
Para fazer backups com segurança, use ferramentas no nível do sistema de arquivos ou volume para criar um instantâneo e fazer o backup do instantâneo.