discrepâncias no tamanho do arquivo rsync [duplicado]

2

Eu tenho alguns PCs com um sistema de arquivos ext4 que eu quero fazer backup em um servidor de arquivos que também é ext4. O problema é que existem algumas discrepâncias nos tamanhos dos arquivos ao usar o rsync, e notei que isso ocorre devido a arquivos esparsos.

O problema é que eu quero criar uma cópia rsync exata do sistema de arquivos usando rsync em uma rede para manter backups semanais, caso eu precise restaurar, e os dados restaurados devem ter o mesmo tamanho que o que está sendo executado no PC.

Criando os arquivos de teste, 1 esparso e 1 não:

mkdir testing
dd if=/dev/zero of=testing/sparse-file.img bs=1 count=0 seek=5M
cp testing/sparse-file.img testing/non-sparse-file.img --sparse=never

Rsync com e sem opção esparsa:

mkdir testa testb
rsync testing/* testa
rsync --sparse testing/* testb

Resultados:

du -h
5.1M    ./testing
4.0K    ./testb
11M     ./testa
16M     .

teste tem 1 arquivo de 5MB e um arquivo esparso, testb fez com que ambos os arquivos se tornassem escassos testa fez com que ambos os arquivos se tornassem não-esparsos

Mas como faço o rsync manter a dispersão de arquivos? Portanto, o sistema de arquivos terá exatamente o mesmo tamanho no sistema restaurado.

Eu quero ter certeza de quando restaurar meu sistema. Saberei exatamente o tamanho dos dados restaurados, com a opção esparsa, meu sistema restaurado será mais esparso do que era originalmente (acho que isso é aceitável ), e com a opção não esparsa, isso resultará em um sistema restaurado maior e imprevisível.

    
por Brandon 15.09.2018 / 06:14

1 resposta

1

Eu acho que você percebe que há um problema quando não há nenhum.

Se você tiver muitos arquivos esparsos, seria obviamente ruim se a restauração perder a dispersão e fizer com que seu disco fique cheio.

Mas se um arquivo original não foi escasso e o arquivo restaurado é esparso, não há problema. Os blocos ausentes em um arquivo esparso retornam zero na leitura. Os arquivos que originalmente não eram de reserva contêm blocos grandes de zeros que são blocos esparsos na cópia. Para qualquer aplicativo lendo o arquivo, o resultado é exatamente o mesmo. Exceto a leitura, os blocos esparsos também são mais rápidos, porque a memória é preenchida com zero em vez de ser lida nos discos. Assim, você pode considerar arquivos esparsos, tanto uma otimização do espaço em disco quanto do tempo de acesso. Você pode até mesmo verificar regularmente seus arquivos e tentar convertê-los em arquivos esparsos se achar que vale a pena.

Durante muito tempo não havia como determinar se um bloco de um arquivo está alocado no disco ou não. Recentemente, alguns sistemas de arquivos Linux têm suporte para encontrar blocos esparsos em um arquivo. Se seus aplicativos realmente dependem das informações de dispersão, você pode extrair isso para um arquivo diferente, incluí-lo no backup e restaurar essa dispersão posteriormente.

Mas a maioria dos aplicativos que criam arquivos esparsos não se importam com o conteúdo dos blocos esparsos. Os blocos nunca foram escritos ou não seriam escassos. O aplicativo sabe que não deve esperar dados nesses blocos.

Então, por que exatamente você acha que isso deveria ser um problema?

    
por 15.09.2018 / 09:03