Post

Sincronizar ficheros con SFTP y rsync en homelab

Sincronizar ficheros con SFTP y rsync en homelab

Sincronizar ficheros con SFTP y rsync en homelab

Este post documenta un flujo de sincronizacion con SFTP y rsync: descarga, subida, borrado controlado, historico y logs.

Flujo recomendado

  1. Descargar ficheros remotos a directorio temporal.
  2. Validar que la descarga contiene lo esperado.
  3. Subir/copiar al destino final.
  4. Mover los ficheros procesados a historico.
  5. Borrar en origen solo si todo lo anterior ha ido bien.

Directorios

1
2
3
4
IN="/srv/sftp/in"
OUT="/srv/sftp/out"
HIST="/srv/sftp/hist/$(date +%Y%m%d_%H%M%S)"
LOG="/var/log/sftp-rsync.log"

SFTP batch

1
2
3
4
cd /remoto/out
mget *
rm *
bye

Ejecutar:

1
sftp -b batch.sftp <USUARIO>@<HOSTNAME>

Rsync a destino

1
rsync -avh --remove-source-files "$OUT/" <USUARIO>@<HOSTNAME>:/destino/

Historico

1
2
mkdir -p "$HIST"
find "$OUT" -type f -print0 | xargs -0 -I{} mv {} "$HIST/"

Log sencillo

1
2
3
printf '[%s] Comienza SFTP\n' "$(date --iso-8601=seconds)" >> "$LOG"
printf '[%s] Finaliza descarga\n' "$(date --iso-8601=seconds)" >> "$LOG"
printf '[%s] Finaliza limpieza remota\n' "$(date --iso-8601=seconds)" >> "$LOG"

Precauciones

  • Evitar rm .* y patrones ambiguos.
  • Usar directorios temporales por ejecucion.
  • No borrar remoto si falla la copia al destino.
  • Registrar fecha, host, numero de ficheros y codigo de salida.
This post is licensed under CC BY 4.0 by the author.