Canvas Image Sync Service es un servicio de transferencia de archivos automatizado desarrollado en Bash que monitorea una carpeta local y sincroniza nuevas imagenes a un servidor web remoto mediante SSH/SCP. El servicio opera como un daemon de sistema, proporcionando:
Sincronizacion en tiempo real — Deteccion inmediata de nuevos archivos mediante inotifywait
Transferencia segura — Comunicacao via SSH con claves de autenticacion
Logging detallado — Registro completo de operaciones para auditoria
Resiliencia — Reinicio automatico ante fallos y verificacion de integridad de archivos
Carpeta Local Servidor Remoto
/home/goviedo/ SCP ai-canvas-web
Documents/canvas ──────► asus:/home/goviedo/
Componente Descripcion image-sync.shScript principal de monitoreo y transferencia canvas-image-sync.serviceDefinicion del servicio systemd sync.logArchivo de logs de operacion
Requisito Valor Sistema operativo Linux (Debian/Ubuntu) Dependencias inotify-tools, openssh-clientShell Bash 4.0+ Permisos Usuario con acceso SSH al servidor remoto
.jpg | .jpeg | .png | .gif | .webp | .bmp | .svg | .ico | .tiff
Variable Descripcion Valor por defecto CARPETA_ORIGENDirectorio local a monitorear /home/goviedo/Documents/canvasCARPETA_DESTINORuta remota de destino goviedo@asus:/home/goviedo/servicios/ai-canvas-web/assetsSSH_KEYRuta a clave SSH privada ~/.ssh/id_asusLOG_FILEArchivo de logs /home/goviedo/Documents/canvas/sync.log
# Instalar dependencias (Debian/Ubuntu)
sudo apt update && sudo apt install inotify-tools openssh-client
# Generar clave SSH si no existe
ssh-keygen -t ed25519 -C "canvas-sync"
# Copiar clave al servidor remoto
ssh-copy-id -i ~/.ssh/id_asus.pub goviedo@asus
# Copiar archivos del servicio
sudo cp /home/goviedo/Documents/canvas/canvas-image-sync.service \
# Recargar daemon de systemd
sudo systemctl daemon-reload
# Habilitar inicio automatico
sudo systemctl enable canvas-image-sync
sudo systemctl start canvas-image-sync
# Verificar estado del servicio
sudo systemctl status canvas-image-sync
# Revisar logs en tiempo real
journalctl -u canvas-image-sync -f
# O revisar el log directamente
tail -f /home/goviedo/Documents/canvas/sync.log
Si prefieres ejecutar sin servicio systemd:
# Ejecutar en primer plano
/home/goviedo/Documents/canvas/image-sync.sh &
# O verificar manualmente copiando un archivo
scp -i ~/.ssh/id_asus /ruta/archivo.jpg \
goviedo@asus:/home/goviedo/servicios/ai-canvas-web/assets/
cat /home/goviedo/Documents/canvas/sync.log
# Filtrar por tipo de evento
grep "ERROR" /home/goviedo/Documents/canvas/sync.log
grep "Exito" /home/goviedo/Documents/canvas/sync.log
sudo systemctl restart canvas-image-sync
sudo systemctl stop canvas-image-sync
sudo systemctl status canvas-image-sync
Autenticacion por clave SSH — Sin contrasenas en texto plano
Principio de menor privilegio — Servicio ejecuta con usuario dedicado
Rutas restringidas — Solo acceso a carpetas especificas
NoNewPrivileges — Previene escalacion de privilegios
PrivateTmp — Aislamiento de archivos temporales
# Restringir permisos de claves SSH
# Limitar comandos SSH permitidos en servidor
# (configurar en /etc/ssh/sshd_config)
# Verificar sintaxis del script
bash -n /home/goviedo/Documents/canvas/image-sync.sh
# Revisar errores de systemd
journalctl -u canvas-image-sync --no-pager -l
ssh -i ~/.ssh/id_asus goviedo@asus echo "Conexion OK"
ssh-keyscan -H asus >> ~/.ssh/known_hosts
Verificar que el archivo tiene extension valida
Confirmar que el archivo no esta vacio
Revisar permisos de escritura en carpeta destino
Consultar logs para mensaje de error especifico
Version Fecha Descripcion 1.0.0 2026-04-22 Version inicial del servicio