Sincronización de archivos — carpetas Mac ↔ Windows P2P con Syncthing
Sincronización de carpetas en tiempo real entre dos máquinas sin pasar por la nube. Mantén dotfiles / notas / proyectos idénticos en cualquier lugar.
Quien usa Mac y Windows acaba preguntándose: «Este archivo que acabo de crear, ¿cómo lo paso a la otra máquina?» USB, Dropbox, iCloud, OneDrive, Git, SCP — todos tienen sus limitaciones evidentes. La nube impone restricciones de tamaño y plantea problemas de privacidad; Git no está pensado para binarios ni archivos intermedios; SCP no tiene automatización.
Syncthing lo resuelve: P2P + código abierto + gratuito. Dos máquinas se sincronizan directamente sin servidor central y caen a la LAN cuando internet no está disponible. Esta guía cubre la configuración en Mac + Windows 11 y patrones de sincronización prácticos.
TL;DR
- Instala Syncthing en ambas — brew en Mac, winget en Windows
- Intercambia el Device ID de cada máquina — registro por única vez
- Comparte una carpeta — un lado la anuncia, el otro acepta
.stignorepara excluir dependencias y secretos — nunca sincronices node_modules ni .env
Requisitos previos
- Mac: macOS 12+ (Homebrew instalado) — Configuración inicial de Mac
- Windows: Windows 10/11 (winget disponible) — Configuración inicial de Windows
- Más rápido cuando ambas máquinas están en la misma LAN (también funciona entre redes a través de internet)
- Ambas máquinas deben estar encendidas para sincronizarse (una máquina en reposo sincronizará al despertar)
1. Por qué Syncthing — Comparativa con alternativas
| Herramienta | Modelo | Límite de tamaño | Ubicación de datos | Precio | Valoración |
|---|---|---|---|---|---|
| Syncthing (recomendado) | P2P, OSS | Solo disco | Tus máquinas | Gratis | Recomendado M0–M2 |
| iCloud Drive | Nube | 5GB gratis / 200GB+ de pago | Apple | $/mes | Prioriza Mac, cliente Win limitado |
| OneDrive | Nube | 5GB gratis / 100GB+ de pago | MS | $/mes | Bien en Win, funciona en Mac |
| Dropbox | Nube | 2GB gratis / 2TB de pago | Dropbox | $/mes | Nivel gratuito muy pequeño |
| Resilio Sync | P2P, cerrado | Ilimitado | Tus máquinas | $/mes (Pro) | Superset de pago |
| Git | Control de versiones | Límites del repo | GitHub etc. | Gratis | Inadecuado para binarios grandes |
| rsync (manual) | Sincronización | Ilimitado | Tus máquinas | Gratis | Sin automatización |
Puntos fuertes de Syncthing: sin límites de tamaño, datos solo en tu disco (privacidad), gratuito, clientes equivalentes en ambos sistemas operativos.
Puntos débiles: ambas máquinas deben estar encendidas simultáneamente (no es apto para copia de seguridad), los conflictos se resuelven manualmente, la interfaz es básica (basada en navegador).
2. Instalación
Mac
brew install --cask syncthing
# O como servicio en segundo plano (inicio automático al arrancar)
brew services start syncthingInterfaz: http://127.0.0.1:8384 — administración en el navegador.
Windows 11
# winget (sin necesidad de admin)
winget install -e --id Syncthing.SyncthingO usa el instalador Syncthing Windows Setup (con icono en la bandeja e inicio automático).
Tras instalar, haz clic derecho en el icono de la bandeja del sistema → «Open» para abrir la interfaz (http://127.0.0.1:8384).
Mac abre la interfaz automáticamente; en Windows se accede desde la bandeja del sistema. Ambos usan la misma interfaz web.
3. Primera conexión — Vincular dos máquinas
3.1 Obtener los Device IDs
En la interfaz de Syncthing de cada máquina:
- Arriba a la derecha → Actions → Show ID
- Copia la cadena larga (
XXXXXXX-XXXXXXX-...)
3.2 Añadir Windows en Mac
- Interfaz de Syncthing en Mac → Add Remote Device (abajo a la derecha)
- Device ID: pega el ID de Windows
- Device Name:
Win11-Desktop(a tu elección) - Guardar
3.3 Aceptar en Windows
En cuestión de segundos Windows muestra una notificación: Device <Mac ID> wants to connect → Add Device → nombre MacBook-Pro → Guardar.
Ambas interfaces muestran la otra como Connected (en verde).
Misma LAN: conexión en 5 s. Por internet: 1–2 min (tras Discovery + Relay).
4. Primera carpeta compartida
4.1 Dirección Mac → Windows
Interfaz de Mac:
- Add Folder
- Folder Label:
notes(a tu elección) - Folder ID:
notes-mac-win(único, debe coincidir en ambos) - Folder Path:
/Users/{yo}/Documents/notes - Pestaña Sharing → marca
Win11-Desktop - Guardar
4.2 Aceptar en Windows + elegir ruta
Notificación en Windows: «MacBook-Pro wants to share folder 'notes-mac-win'» → Add
- Folder Path:
C:\Users\{yo}\Documents\notes(reflejar la estructura de Mac ayuda) - Guardar
4.3 Resultado
Espera hasta que ambas carpetas muestren Up to Date (en verde). La primera vez copia todo en un sentido, de modo que el tiempo depende del tamaño total. Después, los cambios se propagan rápidamente (normalmente en menos de 5 s).
5. .stignore — Qué NO sincronizar
El error más habitual es sincronizar node_modules / .git / .env. Las dependencias deben recompilarse por máquina; las carpetas Git pueden corromperse durante la sincronización; .env contiene secretos. Exclúyelos todos.
5.1 Descarga de plantilla
Para carpetas de desarrollo:
.stignore# Mac/Linux
curl -fsSL https://devalice.jaceclub.com/assets/multi-os/file-sync/stignore-dev.txt -o /path/to/folder/.stignore
shasum -a 256 /path/to/folder/.stignore
# Esperado: f003177e7026492848825e42c4b4845d1c68f787b923ce44854cb47e9c859827# Windows PowerShell
Invoke-WebRequest -Uri https://devalice.jaceclub.com/assets/multi-os/file-sync/stignore-dev.txt -OutFile C:\path\to\folder\.stignore
Get-FileHash C:\path\to\folder\.stignore -Algorithm SHA2565.2 Aplicar
- Coloca
.stignoreen la raíz de la carpeta de sincronización - Interfaz de Syncthing → esa carpeta → Edit → pestaña Ignore Patterns → activa Use .stignore
- Lanza Rescan → los archivos ignorados se excluyen inmediatamente
5.3 Exclusiones críticas
| Patrón | Razón |
|---|---|
node_modules, .venv, target | Dependencias — se compilan por máquina |
.git | Riesgo de corrupción + usa Git para eso |
dist, build, .next | Salidas de compilación — reproducibles |
.env, .env.local, *.pem, id_* | Secretos — nunca sincronizar |
.DS_Store, Thumbs.db | Metadatos del SO |
*.log, tmp | Registros / temporales |
6. Patrones prácticos
6.1 Sincronización de dotfiles
No sincronices todo el directorio home (riesgo de exponer secretos). Agrupa los dotfiles en ~/dotfiles/ y crea enlaces simbólicos.
~/dotfiles/
├── .gitconfig
├── .zshrc
├── .vimrc
└── .tmux.conf# Mac/Linux
ln -s ~/dotfiles/.zshrc ~/.zshrc
ln -s ~/dotfiles/.gitconfig ~/.gitconfig# Windows — el perfil de PowerShell vive en otro lugar
ln -s C:\Users\me\dotfiles\Microsoft.PowerShell_profile.ps1 $PROFILEComparte ~/dotfiles/ mediante Syncthing. Separa los archivos por SO en subcarpetas (dotfiles/common, dotfiles/mac, dotfiles/windows).
6.2 Sincronización de notas
Comparte tu bóveda de Obsidian / Logseq. Genera menos conflictos que iCloud / OneDrive (Syncthing gestiona conflictos por archivo, no por línea; aun así, ten cuidado con ediciones concurrentes).
6.3 Sincronización de fuente de proyecto (con advertencia)
Regla: da preferencia a Git siempre que sea posible. Usa Syncthing solo para archivos secundarios que necesiten sincronización local (borradores, configuración por entorno, notas de experimentos).
Si debes sincronizar la carpeta de código fuente, siempre incluye .git en .stignore. Una sincronización parcial de los archivos internos de Git puede corromper el reflog o el índice.
6.4 Solo enviar / Solo recibir
Tipos de carpeta (Carpeta → Edit → Folder Type):
- Send & Receive (por defecto) — bidireccional
- Send Only — esta máquina es la maestra; los cambios de la otra se ignoran y se rechazan
- Receive Only — solo recibe; los cambios locales no se propagan
Configurar las máquinas de respaldo en
Receive Onlyevita sobreescrituras accidentales en ambas direcciones. Para copias de seguridad reales se siguen necesitando herramientas dedicadas (restic, Time Machine).
7. Gestión de conflictos
Cuando ambas partes editan el mismo archivo al mismo tiempo, Syncthing crea automáticamente un archivo de conflicto:
foo.md(versión más reciente)foo.sync-conflict-20260512-153012-DEVICE.md(la otra versión)
Procedimiento
- Abre ambos y compara (VS Code «Compare with Active» o
diff foo.md foo.sync-conflict-*.md) - Unifica en
foo.md - Elimina el archivo
sync-conflict
Los conflictos frecuentes indican edición simultánea en la misma carpeta. Para notas, organiza subcarpetas por máquina (
notes/mac/,notes/win/) para evitarlos.
8. Seguridad
Autenticación de dispositivos
- El Device ID es un hash de clave pública (TLS); la suplantación es imposible
- Las solicitudes de nuevos dispositivos requieren aprobación explícita en ambos extremos
Tránsito de datos
- Todo el tráfico en TLS 1.2+
- Directo en LAN; a través de Relay público por internet — el Relay solo reenvía texto cifrado
Configuración recomendada
Interfaz → Settings → GUI Authentication:
- Establece GUI Username + GUI Password (especialmente en portátiles en redes externas)
- Sin esto, cualquier persona en la misma LAN puede acceder a
http://tu-ip:8384
Interfaz → Settings → Connections:
- Listen Address: por defecto
- NAT Traversal ✅ (perforación automática)
.stignore para secretos
- Siempre excluye
.env,*.pem,id_*,.aws/credentials - El
stignore-dev.txtde esta guía ya lo hace
Verificación
Comprueba en ambas máquinas:
- Crea
notes/test.mden Mac → aparece en Windows en menos de 10s - Edita
notes/test.mden Windows → se refleja en Mac en menos de 10s - Elimina
notes/test.mden Mac → desaparece en Windows en menos de 10s - Edita en ambas simultáneamente → aparece el archivo
sync-conflict-...(gestiona según §7) node_modules/.envcreados en un lado no llegan al otro
Resolución de problemas
Las dos máquinas no se encuentran
- ¿Misma LAN? (por internet, espera hasta 5 minutos)
- Comprueba que el firewall permite el puerto 22000 de Syncthing
- Mac: Ajustes del sistema → Red → Firewall desactivado, o añade Syncthing como excepción
- Windows: PowerShell
Get-NetFirewallApplicationFilter | ? { $_.Program -match 'syncthing' }
La sincronización es lenta
- Carpetas muy grandes (decenas de miles de archivos): el primer escaneo es lento. Aumenta el valor en Carpeta → Edit → Rescan Interval
- Por internet a través de Relay → lento. Da preferencia a la misma LAN
- Cuello de botella en disco; se recomienda usar SSD
«Out of sync» persistente
- Carpeta → Override Changes (en Send & Receive) — fuerza esta máquina como maestra
- O Revert Local Changes (modo Receive)
- Ambas opciones pueden ocasionar pérdida de datos; haz una copia de seguridad antes
.stignore no surte efecto
- Confirma que Use .stignore está marcado en Carpeta → Edit → Ignore Patterns
.stignoredebe estar en la raíz de la carpeta (no en una subcarpeta)- Lanza Rescan (Carpeta → ⋮ → Rescan)
Icono de la bandeja de Windows no aparece
winget installpuede no iniciar automáticamente- El instalador Syncthing Windows Setup añade bandeja e inicio automático
- O ejecuta
syncthing.exe --no-console --no-browseral iniciar sesión mediante el Programador de tareas
Secreto sincronizado accidentalmente
- Elimina el archivo en ambas máquinas inmediatamente
- Syncthing puede moverlo a la papelera (Carpeta → File Versioning)
- Rota el secreto (clave API etc.) — asume que la otra máquina lo tocó
- Añade el patrón a
.stignorepara evitar que vuelva a ocurrir
Referencias
- Configuración inicial de Mac / Configuración inicial de Windows — requisitos previos de Homebrew/winget
- Compartir entrada Mac ↔ Windows — guía complementaria
- Documentación oficial de Syncthing — Tipos de carpeta, Versionado, API
- Sintaxis de
.stignore
Historial de cambios
- 2026-05-12: Primer borrador. Alternativas + configuración (Mac+Win) + cinco patrones + gestión de conflictos + seis casos de resolución de problemas + plantilla de activo
.stignore.