Cómo montar un servidor rsync en Windows 11 usando WSL2 y Debian
![]()
Esta guía explica cómo convertir un Windows 11 en un servidor rsync (modo daemon, puerto 873) utilizando Debian sobre WSL2, para recibir copias de seguridad enviadas desde un NAS u otro equipo Linux.
1. Instalar WSL2 y Debian
Abre PowerShell como administrador y ejecuta:
wsl --install -d Debian
Reinicia el equipo si el sistema lo solicita. Al arrancar Debian por primera vez, se te pedirá crear un usuario y contraseña de Linux.
2. Instalar rsync dentro de Debian
Dentro de la terminal de Debian:
sudo apt update
sudo apt install rsync -y
3. Configurar rsync en modo daemon
Crea el fichero /etc/rsyncd.conf:
uid = nobody
gid = nogroup
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
[backup]
path = /mnt/c/BackupNAS
comment = Copias desde el NAS
read only = false
auth users = copiasnas
secrets file = /etc/rsyncd.secretspath = /mnt/c/BackupNAS comment = Copias desde el NAS read only = false auth users = copiasnas secrets file = /etc/rsyncd.secrets
La ruta /mnt/c/BackupNAS hace que los ficheros recibidos queden guardados directamente en el disco C: de Windows.
Crea la carpeta de destino y el fichero de contraseñas del daemon (usuario propio de rsync, no de Windows):
sudo mkdir -p /mnt/c/BackupNAS
echo "copiasnas:TuContraseñaSegura" | sudo tee /etc/rsyncd.secrets
sudo chmod 600 /etc/rsyncd.secrets
4. Arrancar el servicio rsync
Para que arranque automáticamente con systemd (si tu Debian en WSL2 lo soporta):
sudo systemctl enable rsync
sudo systemctl start rsync
Si prefieres lanzarlo manualmente para probar:
sudo rsync --daemon --config=/etc/rsyncd.conf
Nota: si ves el error
failed to lock pid file /var/run/rsyncd.pid: Resource temporarily unavailable, significa que el daemon ya está corriendo (probablemente porsystemctl start). Compruébalo conps aux | grep rsyncy no lo relances manualmente si ya está activo. Usa solo una vía de arranque (systemd o lanzamiento manual, no ambas) para evitar este conflicto.
5. Conseguir que Debian arranque sola tras reiniciar Windows
WSL2 no se levanta solo al arrancar Windows por defecto. Hay que forzarlo con una tarea programada:
$action = New-ScheduledTaskAction -Execute "wsl.exe" -Argument "-d Debian -- true"
$trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "WSL-Debian-Startup" -Action $action -Trigger $trigger -RunLevel Highest -User "SYSTEM"
Si systemctl enable rsync funciona correctamente dentro de Debian, esta tarea solo necesita iniciar la instancia de WSL; el propio systemd de Debian se encargará de levantar el daemon rsync.
También conviene configurar la BIOS/UEFI del equipo con la opción "Restore on AC Power Loss" en "Power On", para que la máquina encienda sola tras un corte de energía.
6. Redirigir el puerto 873 desde Windows hacia WSL2
La IP interna de WSL2 cambia en cada reinicio, así que hace falta un reenvío de puerto (portproxy) desde la IP de Windows hacia la IP interna de Debian:
$wslIP = (wsl -d Debian hostname -I).Trim()
netsh interface portproxy add v4tov4 listenport=873 listenaddress=0.0.0.0 connectport=873 connectaddress=$wslIP
Este comando debe volver a ejecutarse en cada arranque (por ejemplo, añadiéndolo a la misma tarea programada del paso 5), ya que la IP de WSL cambia.
7. Abrir el puerto en el firewall de Windows
New-NetFirewallRule -DisplayName 'Rsync Daemon WSL' -Direction Inbound -Protocol TCP -LocalPort 873 -Action Allow
8. Comando de sincronización desde el NAS
rsync -avz /origen_nas/ copiasnas@IP_WINDOWS::backup/
Se pedirá la contraseña definida en rsyncd.secrets. Para evitar introducirla manualmente en tareas automáticas, puede pasarse mediante la variable de entorno RSYNC_PASSWORD o un fichero con --password-file.
9. Solución de problemas: se crean las carpetas pero no los ficheros
Si al sincronizar aparece la estructura de directorios pero los ficheros no llegan, revisa:
- Filtros en el comando del NAS: patrones como
--include='*/' --exclude='*'crean solo la estructura de carpetas a propósito. Revisa si tu NAS trae este preset activado. - El log del daemon:
cat /var/log/rsyncd.log— un error tipomkstemp failed: Permission deniedapunta a un problema de permisos. - Permisos del usuario
nobodysobre/mnt/c/BackupNAS: prueba temporalmente conuid = root/gid = rootenrsyncd.confpara descartar el problema; si con root funciona, ajusta permisos en la carpeta en vez de dejar el daemon corriendo como root de forma permanente. - Metadatos del mount
/mnt/c: edita/etc/wsl.confañadiendo:[automount] options = "metadata"y reinicia WSL (wsl --shutdowndesde PowerShell) para que los permisos POSIX se respeten de forma más consistente sobre NTFS.
Resumen del flujo completo al arrancar el equipo
- La BIOS enciende el equipo tras un corte de energía.
- Windows arranca y ejecuta la tarea programada
WSL-Debian-Startup. - Esa tarea inicia la instancia de Debian en WSL2.
- Systemd, dentro de Debian, levanta automáticamente el servicio
rsync. - La misma tarea (o una complementaria) reconfigura el
portproxycon la nueva IP de WSL. - El NAS puede sincronizar contra el puerto 873 de la IP de Windows sin intervención manual.
