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 .
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?
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 .
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.
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!
Tags ssh rsync dd linux sparse-files