Saltar al contenido

Sincroniza aplicaciones de macOS entre varios Mac

mac-sync-bootstrap - Sincroniza aplicaciones de macOS entre varios Mac

Sección titulada «mac-sync-bootstrap - Sincroniza aplicaciones de macOS entre varios Mac»

mac-sync-bootstrap es una herramienta CLI para macOS pensada para replicar el entorno base de aplicaciones entre varios Mac de forma simple y repetible.

Se apoya en cuatro piezas que ya encajan bien en el ecosistema Apple:

  • Homebrew
  • Homebrew Cask
  • mas para Mac App Store
  • iCloud Drive

La idea es directa: exportar desde un Mac la lista de paquetes y aplicaciones instaladas, guardar ese estado compartido en iCloud e importar ese mismo estado en otro Mac para instalar lo que falte.

No usa servidores externos, no necesita base de datos y no depende de infraestructura propia.

Este proyecto sirve para varios casos muy concretos:

  • Preparar un Mac nuevo sin reinstalar todo manualmente
  • Mantener varios Mac con un conjunto parecido de herramientas
  • Replicar de forma rápida el entorno base de trabajo
  • Tener una rutina de bootstrap simple basada en shell

Es especialmente útil si ya usas brew, instalas software con cask y además tienes aplicaciones compradas o descargadas desde la App Store.

mac-sync-bootstrap sincroniza tres grupos:

  • Fórmulas de Homebrew
  • Casks de Homebrew
  • Aplicaciones instaladas con mas

El estado compartido se guarda en iCloud en esta ruta:

~/Library/Mobile Documents/com~apple~CloudDocs/MacSync/

Ahí genera dos ficheros:

  • Brewfile
  • appstore_apps.txt

El proyecto gira alrededor de un script principal: sync_mac_apps.sh.

Ese script soporta tres modos de trabajo:

  • export
  • import
  • sync

Lee el estado de la máquina actual y lo guarda en iCloud.

Hace dos cosas:

  1. Genera un Brewfile con brew bundle dump
  2. Guarda la salida de mas list en appstore_apps.txt

Es el comando que debes ejecutar en el Mac que ya tiene instalado el software que quieres replicar.

Lee los ficheros guardados en iCloud y aplica ese estado en el Mac actual.

Hace dos cosas:

  1. Ejecuta brew bundle --file="$BREWFILE" para instalar fórmulas y casks faltantes
  2. Recorre appstore_apps.txt e instala con mas solo las apps que no existen ya en el equipo

Es el comando adecuado para un Mac nuevo o para una máquina que quieres alinear con otra.

Ejecuta import y después export.

Este modo es útil cuando el mismo Mac puede recibir cambios del estado compartido y luego publicar su estado actualizado en iCloud.

Ventana de terminal
git clone https://github.com/usblsb/mac-sync-bootstrap.git
Ventana de terminal
cd mac-sync-bootstrap
Ventana de terminal
chmod +x install.sh
Ventana de terminal
./install.sh

install.sh copia el script principal a ~/sync_mac_apps.sh, instala Homebrew si no existe e instala mas si falta.

Ventana de terminal
~/sync_mac_apps.sh export

Este paso crea en iCloud el inventario compartido de software.

Ventana de terminal
~/sync_mac_apps.sh import

Este paso instala lo que falta en la máquina de destino sin reinstalar lo que ya existe.

Ventana de terminal
~/sync_mac_apps.sh sync

El enfoque del proyecto busca ser mínimo y robusto:

  • Reutiliza herramientas estándar del sistema y del ecosistema macOS
  • Evita reinstalaciones innecesarias
  • Soporta ejecuciones repetidas
  • Guarda un log local
  • Usa lockfile para evitar doble ejecución simultánea
  • Funciona tanto en Apple Silicon como en Intel

El log local se escribe en:

~/Library/Logs/sync_mac_apps.log

Y el lockfile se crea en:

/tmp/mac_sync_bootstrap.lock

Para que funcione correctamente:

  • Todos los Mac deben usar el mismo Apple ID
  • iCloud Drive debe estar activado
  • Debe haber conexión a Internet al instalar paquetes o apps
  • La sesión de App Store debe estar iniciada para que mas pueda operar

Repositorio público en GitHub:

mac-sync-bootstrap no pretende ser un gestor de configuración complejo. Su valor está en resolver bien un problema concreto: mover y mantener sincronizado el software base entre varios Mac con una solución pequeña, entendible y sin infraestructura adicional.