Está usando tar enquanto o diretório de origem está sendo atualizado com segurança?

3

Eu tenho que fazer uma pergunta semelhante a this .

Em cenários em que você está fazendo backup do diretório com tar e

  1. novos arquivos / pastas estão sendo adicionados

  2. os arquivos / diretórios atuais estão sendo editados e excluídos

você pode esperar um resultado seguro?

Por resultado seguro quero dizer algo como:

  1. tar não vai estragar algo no diretório dir / subdiretórios
  2. tar adicionará ao arquivamento como encontrado no momento da criação do arquivamento
  3. o sinal de sucesso será emitido mesmo que as mudanças descritas tenham ocorrido
por Miloš Đakonović 31.12.2016 / 15:09

2 respostas

3

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.

    
por 01.01.2017 / 01:32
5

Não.

  • Se você adicionar um arquivo depois que o tar digitalizar seu diretório, o arquivo não será adicionado.
  • Se um arquivo já estiver no arquivo, mas você o excluir no disco, ele não poderá ser excluído do arquivo.
  • Isso também se aplica se você alterar o conteúdo.

Uma coisa que o Unix (não o tar) fará:

  • Se um arquivo é aberto (em edição) quando o tar o reúne, você não saberá qual versão do arquivo será usada pelo tar (tanto na memória, no disco ou uma mistura entre).

Lembre-se de que você pode usar o tar para ler ou gravar em um pipe (na verdade t em tar significa fita, quando o mundo era jovem), então tar

  • escreverá em uma passagem
  • não irá retroceder a saída

O acima é verdadeiro para um tar -c básico.

  • tar -u adicionará novo arquivo.
  • Se estiver alocando em um arquivo, uma combinação de shell tar --diff e tar --delete poderá ser usada para sincronizar arquivos e diretórios tar.
por 31.12.2016 / 15:24