Reconecte a conexão ssh sem quebrar o tubo

1

Eu tenho duas máquinas em um site diferente. Duas máquinas têm o volume do FreeBSD e do ZFS. Um é mestre. e outro é backup.

Eu costumo fazer um backup por este comando que invocado pelo cron.

zfs send -i pool/vol@old pool/vol@new | ssh backup zfs recv pool/vol

Mas o instantâneo é bem grande. Precisa de mais de 24 horas, e em algum momento perdeu a conexão. Se isso aconteceu, eu preciso reenviá-lo primeiro byte.

Existe alguma maneira de reconectar a conexão ssh sem tubo de freio?

Por exemplo, posso imaginar o comando chunked_send e chunked_recv.

zfs send -i pool/vol@old pool/vol@new | chunked_send id1 ssh backup chunked_recv id1 zfs recv pool/vol

atualização:

Uma solução ingênua é usar arquivo temporário e rsync.

zfs send -i vol@old vol@new | split -b 1024m backup-tmp.
rsync backup-tmp.* backup:/tmp
ssh backup 'cat /tmp/backup-tmp.* | zfs recv vol'

Eu sinto que isso não é inteligente.

    
por user295103 01.02.2014 / 06:02

1 resposta

0

Tente encapsular a conexão TCP nos pacotes UDP. A maneira mais simples de fazer isso é instalar uma rede OpenVPN entre os dois servidores.

A conexão UDP pode causar desconexões ocasionais. Conexões SSH por UDP VPN não parecem desconectar. Não tenho certeza sobre o seu comando, mas tenho quase certeza de que ele resistiria a desconexões se usado em uma rede OpenVPN.

Eu escrevi um OpenVPN guia de instalação para o Debian que pode ajudá-lo. Ele fornece uma ferramenta facilitando a configuração do servidor OpenVPN.

    
por 01.02.2014 / 06:29

Tags