Como determinar o tamanho do arquivo tar sem criá-lo?

3

Estou arquivando alguns diretórios todas as noites para a fita LTO-7 com cerca de 100 ou mais arquivos grandes (2 GB) em cada um deles.

Como uma verificação de que os dados foram escritos corretamente, estou verificando se o número de bytes reportados é o mesmo que deveria ter sido escrito.

Primeiro, estou olhando para o tamanho do arquivo fazendo uma execução de piche:

tar -cP --warning=no-file-changed $OLDEST_DIR | wc -c

Então estou criando o arquivo com:

tar -cvf /dev/nst0 --warning=no-file-changed --totals $OLDEST_DIR

Se os arquivos corresponderem, excluo o arquivo original.

O problema é que o dry-run tem que ler todo o conteúdo dos arquivos e pode levar várias horas. Idealmente, deve-se usar os tamanhos de arquivo reportados, aplicar o preenchimento / alinhamento necessário e reportar o tamanho ao invés de espancar o disco por horas.

Usar du -s ou similar não funciona porque os tamanhos não combinam bastante (sistemas de arquivos tratam um diretório como 4096 bytes, o tar o trata como 0 bytes, por exemplo).

Alternativamente, existe uma maneira melhor de verificar se o arquivo foi escrito corretamente? Não posso confiar no código de retorno do tar, já que estou ignorando certos avisos (para lidar com algum tipo de bug com o tar / mdraid)

    
por nippoo 07.09.2016 / 16:33

2 respostas

2

Se você adicionar um v extra ao seu comando tar , que grava na unidade, ele informará os tamanhos dos arquivos; você poderia, talvez, analisar isso e comparar os tamanhos dos arquivos, sem ter que ler todos os arquivos duas vezes.

Você precisa entender que isso não é um substituto para a verificação adequada, e a única verificação real de um backup é uma restauração ... Observe que as unidades LTO verifica as gravações conforme elas vão , então você não está cego aqui. Mas simplesmente confiar em comparações de tamanho de arquivo não diz muito a você!

Na verdade, eu recomendo strongmente o uso de software de backup adequado, como o Bacula , que é ideal para backups em fita. Depois de configurá-lo, ele cuidará de suas verificações para você.

    
por 07.09.2016 / 17:19
2

Eu concordo que seria sábio usar um software de arquivamento de fita apropriado, mas, na falta dele, você deveria simplesmente enviar sua saída tar real para um programa de soma de verificação e depois para sua fita. Por exemplo,

tar -cPf - --warning=no-file-changed $OLDEST_DIR |
tee >(md5sum > sum.md5) |
dd of=/dev/nst0 

Você pode então reler a fita para comparar as somas de verificação.

dd if=/dev/nst0 | md5sum | diff - sum.md5

Pode ser necessário adicionar opções adequadas a dd em seu dispositivo. Eu adicionei o próprio valor da soma de verificação ao final da fita para que possa ser verificado novamente a qualquer momento. Você também precisa verificar o tar inicial para erros, é claro.

    
por 07.09.2016 / 19:15