devAlice
← Multi-OS

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

  1. Instala Syncthing en ambas — brew en Mac, winget en Windows
  2. Intercambia el Device ID de cada máquina — registro por única vez
  3. Comparte una carpeta — un lado la anuncia, el otro acepta
  4. .stignore para 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

HerramientaModeloLímite de tamañoUbicación de datosPrecioValoración
Syncthing (recomendado)P2P, OSSSolo discoTus máquinasGratisRecomendado M0–M2
iCloud DriveNube5GB gratis / 200GB+ de pagoApple$/mesPrioriza Mac, cliente Win limitado
OneDriveNube5GB gratis / 100GB+ de pagoMS$/mesBien en Win, funciona en Mac
DropboxNube2GB gratis / 2TB de pagoDropbox$/mesNivel gratuito muy pequeño
Resilio SyncP2P, cerradoIlimitadoTus máquinas$/mes (Pro)Superset de pago
GitControl de versionesLímites del repoGitHub etc.GratisInadecuado para binarios grandes
rsync (manual)SincronizaciónIlimitadoTus máquinasGratisSin 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 syncthing

Interfaz: http://127.0.0.1:8384 — administración en el navegador.

Windows 11

# winget (sin necesidad de admin)
winget install -e --id Syncthing.Syncthing

O 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:

  1. Arriba a la derecha → ActionsShow ID
  2. Copia la cadena larga (XXXXXXX-XXXXXXX-...)

3.2 Añadir Windows en Mac

  1. Interfaz de Syncthing en Mac → Add Remote Device (abajo a la derecha)
  2. Device ID: pega el ID de Windows
  3. Device Name: Win11-Desktop (a tu elección)
  4. Guardar

3.3 Aceptar en Windows

En cuestión de segundos Windows muestra una notificación: Device <Mac ID> wants to connectAdd 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:

  1. Add Folder
  2. Folder Label: notes (a tu elección)
  3. Folder ID: notes-mac-win (único, debe coincidir en ambos)
  4. Folder Path: /Users/{yo}/Documents/notes
  5. Pestaña Sharing → marca Win11-Desktop
  6. Guardar

4.2 Aceptar en Windows + elegir ruta

Notificación en Windows: «MacBook-Pro wants to share folder 'notes-mac-win'»Add

  1. Folder Path: C:\Users\{yo}\Documents\notes (reflejar la estructura de Mac ayuda)
  2. 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 SHA256

5.2 Aplicar

  1. Coloca .stignore en la raíz de la carpeta de sincronización
  2. Interfaz de Syncthing → esa carpeta → Edit → pestaña Ignore Patterns → activa Use .stignore
  3. Lanza Rescan → los archivos ignorados se excluyen inmediatamente

5.3 Exclusiones críticas

PatrónRazón
node_modules, .venv, targetDependencias — se compilan por máquina
.gitRiesgo de corrupción + usa Git para eso
dist, build, .nextSalidas de compilación — reproducibles
.env, .env.local, *.pem, id_*Secretos — nunca sincronizar
.DS_Store, Thumbs.dbMetadatos del SO
*.log, tmpRegistros / 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 $PROFILE

Comparte ~/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 Only evita 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

  1. Abre ambos y compara (VS Code «Compare with Active» o diff foo.md foo.sync-conflict-*.md)
  2. Unifica en foo.md
  3. 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.txt de esta guía ya lo hace

Verificación

Comprueba en ambas máquinas:

  1. Crea notes/test.md en Mac → aparece en Windows en menos de 10s
  2. Edita notes/test.md en Windows → se refleja en Mac en menos de 10s
  3. Elimina notes/test.md en Mac → desaparece en Windows en menos de 10s
  4. Edita en ambas simultáneamente → aparece el archivo sync-conflict-... (gestiona según §7)
  5. node_modules / .env creados 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
  • .stignore debe 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 install puede no iniciar automáticamente
  • El instalador Syncthing Windows Setup añade bandeja e inicio automático
  • O ejecuta syncthing.exe --no-console --no-browser al iniciar sesión mediante el Programador de tareas

Secreto sincronizado accidentalmente

  1. Elimina el archivo en ambas máquinas inmediatamente
  2. Syncthing puede moverlo a la papelera (Carpeta → File Versioning)
  3. Rota el secreto (clave API etc.) — asume que la otra máquina lo tocó
  4. Añade el patrón a .stignore para evitar que vuelva a ocurrir

Referencias

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.