Gzip canalizado para Rsync

Gzip canalizado para Rsync

Quero fazer algo como gzip um arquivo e sincronizá-lo imediatamente com outro servidor para que o arquivo gzip criado não seja gravado no servidor local. Eu estava pensando em fazer algo assim... mas obviamente isso falhou.

arquivo gzip | rsync -auv outro_servidor

Alguém tem alguma ideia sobre isso? Ou isso é mesmo possível?

Responder1

Minha abordagem usual para isso seria usar gzip e ssh da seguinte maneira:

arquivo gzip -c | ssh[e-mail protegido]"gato > destino.gz"

Isso enviará a saída zip por ssh diretamente para o arquivo "destination.gz" no host remoto. Se você estiver fazendo isso manualmente, basta digitar sua senha ssh; se quiser fazer isso automaticamente, você precisará configurar chaves ssh, algo assim:

http://pkeck.myweb.uga.edu/ssh/

Responder2

Não leve isso para o lado pessoal, mas pela sua pergunta e comentários parece que você não entende o que é realmente rsyncpara. Não serve para mover arquivos de um lugar para outro – serve parasincronizandoarquivos entre dois lugares. Se não quiser manter uma cópia na máquina local, você não está sincronizando e o rsync não é a ferramenta desejada.

Você está tentando transferir um arquivo. Para isso, você pode colocá-lo no disco e usar ssh, ftp, sftp, ftps e assim por diante, ou pode canalizá-lo através do ssh como sugeriu Glenn, que é a resposta certa e a única maneira certa de fazer o que deseja. Se você está preocupado com a utilização de recursos (e para conexões de alta largura de banda isso pode fazer a diferença), altere as cifras:

gzip -c somefile | ssh -c blowfish user@host 'cat > someotherfile'

Se você tentar fazer algo (como canalizar para rsync) e não funcionar, é possível que você esteja fazendo errado ou tentando fazer a coisa errada. É uma questão de ferramenta para o trabalho, e é importante não descartar que, seja lá o que você esteja tentando fazer, existe uma ferramenta adequada para isso.

Compreender e ter em mente a finalidade das diversas ferramentas disponíveis em um ambiente UNIX permitirá que você use e manipule esse ambiente de maneira mais eficaz. Muitas ferramentas têm diferenças sutis ou sobreposição de funcionalidades, mas, a menos que você preste atenção a todas elas, perderá muitas das melhores maneiras de realizar tarefas.

Responder3

O Rsync provavelmente não trará benefícios neste caso, pois o conteúdo enviado será exclusivo.

Compactar um arquivo e enviar a saída para STDOUT é bastante simples:

gzip -c file > another-file

Se você procura velocidade e tem controle nas duas pontas, o netcat quase não tem sobrecarga.

Configure a máquina de destino para escutar, na porta 1234

user@bar$ nc -l -p 1234 > file.gz

Enviar, 'file.gz', para a barra da máquina:1234

user@foo$ gzip -c file | nc bar 1234

Responder4

Combinar gzip e rsync não funciona.

Se você enviar o arquivo descompactado, o rsync funcionará enviando apenas os bits que foram alterados. Mas quando você compacta um arquivo, o arquivo resultante será significativamente diferente a cada vez. Canalizá-lo para o rsync alcançaria, na melhor das hipóteses, um resultado semelhante ao ssh e poderia até ser pior.

A razão pela qual um arquivo compactado é diferente a cada vez é porque ele cria o perfil dos dados antes da compactação. Isso significa que mesmo uma pequena alteração no arquivo pode significar uma alteração no perfil, afetando cada byte compactado.

informação relacionada