Gzip canalizado a Rsync

Gzip canalizado a Rsync

Quiero hacer algo como comprimir un archivo y luego sincronizarlo inmediatamente con otro servidor para que el archivo gzip creado no se escriba en el servidor local. Estaba pensando en hacer algo como esto... pero obviamente esto falla.

archivo gzip | rsync -auv otro_servidor

¿Alguien tiene alguna idea sobre esto? ¿O es esto posible?

Respuesta1

Mi enfoque habitual para esto sería utilizar gzip y ssh de la siguiente manera:

archivo gzip -c | ssh[correo electrónico protegido]"gato > destino.gz"

Esto enviará la salida zip a través de ssh directamente al archivo "destination.gz" en el host remoto. Si haces esto manualmente, simplemente ingresa tu contraseña ssh; Si desea hacerlo automáticamente, deberá configurar claves ssh, de acuerdo con algo como esto:

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

Respuesta2

No te tomes esto como algo personal, pero según tu pregunta y comentarios parece que no entiendes qué es realmente rsync.para. No es para mover archivos de un lugar a otro, es parasincronizandoarchivos entre dos lugares. Si no desea conservar una copia en la máquina local, entonces no está sincronizando y rsync no es la herramienta que desea.

Estás intentando transferir un archivo. Para eso, puede ponerlo en el disco y usar ssh, ftp, sftp, ftps, etc., o puede canalizarlo a través de ssh como sugirió Glenn, que es la respuesta correcta y la única forma correcta de hacer lo que quiere. Si le preocupa la utilización de recursos (y para conexiones de gran ancho de banda esto puede marcar la diferencia), cambie los cifrados:

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

Si intenta hacer algo (como canalizar a rsync) y no funciona, es posible que lo esté haciendo mal o que esté intentando hacer algo incorrecto. Es una cuestión de herramienta para el trabajo, y es importante no descartar que, sea lo que sea lo que intentes hacer, exista una herramienta adecuada para ello.

Comprender y tener en cuenta el propósito de las diversas herramientas disponibles en un entorno UNIX le permitirá utilizar y manipular ese entorno de forma más eficaz. Muchas herramientas tienen diferencias sutiles o se superponen en funcionalidad, pero a menos que les prestes atención a todas, te perderás muchas de las mejores formas de realizar tareas.

Respuesta3

Es probable que Rsync no proporcione ningún beneficio en este caso, ya que el contenido que envía será único.

Comprimir un archivo y enviar el resultado a STDOUT es bastante simple:

gzip -c file > another-file

Si buscas velocidad y tienes control sobre ambos extremos, netcat casi no tiene gastos generales.

Configure la máquina de destino para escuchar, en el puerto 1234

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

Enviar, 'archivo.gz', a la barra de la máquina:1234

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

Respuesta4

Combinar gzip y rsync no funciona.

Si envía el archivo sin comprimir, rsync funciona enviando solo los bits que han cambiado. Pero cuando comprimes un archivo, el archivo resultante será significativamente diferente cada vez. Conectarlo a rsync lograría, en el mejor de los casos, un resultado similar al de ssh, e incluso podría ser peor.

La razón por la que un archivo comprimido es diferente cada vez es porque perfila los datos antes de comprimirlos. Eso significa que incluso un pequeño cambio en el archivo puede significar un cambio en el perfil, afectando cada byte comprimido.

información relacionada