es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copiar contenido filtrado del archivo al servidor remoto a través de rsync.

Sé cómo copiar archivos entre servidores utilizando rsync. Pero estaba buscando una opción donde no quiero copiar todo el contenido de un archivo en otro servidor.
Ejemplo: Quiero copiar /var/log/messages filtrado por la fecha de hoy en el servidor remoto en la carpeta con la fecha de hoy, y el contenido de mañana en la carpeta con la fecha de mañana, y así sucesivamente. Aunque puedo lograr lo mismo creando archivos temporales en el nodo local antes de transferir, estoy buscando una solución donde se pueda transferir los datos filtrados al servidor remoto sin crear ningún archivo temporal local.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una possible solución para transferir datos filtrados sin crear archivos temporales locales es utilizar la opción --rsync-path de rsync en conjunto con los comandos ssh y find.

    Aquí tienes el proceso paso a paso para lograr esto:

    1. Comienza conectándote al servidor remoto utilizando el comando ssh.
    2. Utiliza el comando find para filtrar el contenido basado en la fecha de hoy. Por ejemplo, para filtrar /var/log/messages por la fecha de hoy, puedes utilizar el siguiente comando:
    ssh servidor_remoto find /var/log/messages -type f -newermt "$(date +%Y-%m-%d)"
    

    Esto mostrará una lista de todos los archivos en /var/log/messages que fueron modificados después de la fecha de hoy.

    1. Haz un pipe de la salida del comando find al comando rsync utilizando la opción --rsync-path para transferir los datos filtrados al servidor remoto. La opción --rsync-path especifica la ruta al comando rsync en el servidor remoto. Por ejemplo:
    rsync --rsync-path="sudo rsync" -aPvz -e ssh $(ssh servidor_remoto find /var/log/messages -type f -newermt "$(date +%Y-%m-%d)") servidor_remoto:/ruta/hasta/carpeta/de/fecha/de/hoy
    

    Esto transferirá todos los archivos filtrados por la fecha de hoy a la carpeta fecha de hoy en el servidor remoto.

    1. Repite los pasos 2 y 3 para la fecha de mañana o cualquier otro filtro específico.

    Nota: Asegúrate de reemplazar servidor_remoto por el nombre de host o dirección IP real del servidor remoto, y /ruta/hasta/carpeta/de/fecha/de/hoy por la ruta real de la carpeta de destino en el servidor remoto. Además, utiliza permisos y opciones adecuadas con los comandos rsync y ssh según tus necesidades.

Comments are closed.