de um arquivo esparso para um dispositivo de bloco na rede

5

Se eu tiver um arquivo esparso representando um dispositivo de bloco, como posso restaurar o arquivo eficientemente em uma rede? Idealmente, usaria rsync -S host:file /dev/sdb , mas rsync não gravaria em dispositivos de bloco. Estou usando ssh host dd if=file | dd of=/dev/sdb , mas isso não é eficiente, pois os bytes zero virão pela rede e serão gravados no dispositivo. Posso usar tar -S ou cp --sparse=always de alguma forma? Posso fazer isso sem armazenar o arquivo localmente (mesmo temporariamente)? O sshfs pode reconhecer arquivos esparsos?

    
por Jayen 03.08.2012 / 09:18

3 respostas

3

Eu não testei, mas há um patch write-devices no rsync, o que resolveria seu problema. Você pode encontrar o patch no repositório rsync-patches .

    
por 03.08.2012 / 10:32
2

Você pode instalar o software iSCSI Enterprise Target e configurar um iSCSI LUN a partir do arquivo esparso da seguinte forma:

No /etc/iet/ietd.conf:

Target iqn.my.iscsi.test:disk1
        Lun 0 Path=/path/to/my/sparse_file,Type=fileio

Em seguida, inicie o alvo a partir do host em que você precisa restaurar. Como o alvo será exibido como um dispositivo local (por exemplo, / dev / sdd), você pode usar dd desse dispositivo para o dispositivo local.

    
por 03.08.2012 / 15:22
0

Já tentou comprimir / descomprimir os dados em voo? Lotes de zeros devem ser bem compactados.

Na verdade, tendo pensado nisso de novo, é muito simples. No host remoto, crie um pipe com mkfifo . scp / dd para esse canal como de costume e cp --sparse=always para o arquivo de destino real.

Testado na minha instalação e produz um arquivo esparso na saída. Obrigado por uma boa pergunta!

    
por 03.08.2012 / 11:21