Para comparar una carpeta de proyecto en su Mac con una copia en un servidor accesible por SSH, use rsync en modo de prueba (dry-run). Puede enumerar qué archivos parecen desincronizados sin transferirlos ni modificarlos. Para ver diferencias de texto dentro de un archivo, use diff después de traer ambas versiones a la Mac. Esta guía se centra en comparar un directorio de proyecto local con un directorio remoto; no asume que las dos copias estén sincronizadas ni le dice qué versión debe prevalecer.
Compruebe primero la conexión y las rutas
Abra Terminal en su Mac. Apple documenta SSH como uno de los protocolos que Terminal puede utilizar para conectarse a servidores remotos; con el cliente de línea de comandos ssh, también puede ejecutar un comando en la máquina remota. Necesitará un nombre de servidor, una cuenta remota, acceso al directorio del proyecto y una autenticación SSH funcional. La guía de Terminal de Apple y el manual de ssh de OpenBSD describen estas opciones de conexión.
Reemplace el nombre de cuenta, host y carpeta de ejemplo a continuación con los suyos propios. La máquina remota debe tener rsync instalado y disponible para su cuenta. rsync --version muestra la versión local; se puede comprobar una versión remota con ssh user@host rsync --version.
ssh user@server.example.com
Si ese inicio de sesión falla, resuelva el problema de host, autenticación, red o acceso antes de comparar archivos. Luego, identifique ambos directorios de proyectos con precisión. En los ejemplos, /Users/you/Projects/site es local y /srv/projects/site es remoto. Mantenga la barra inclinada final en cada ruta de directorio para comparar el contenido del directorio en la misma disposición relativa. Ponga entre comillas las rutas que contengan espacios.
Previsualizar qué archivos difieren
Ejecute este comando desde su Mac:
rsync -rnic --out-format='%i %n' \
user@server.example.com:/srv/projects/site/ \
/Users/you/Projects/site/
La ruta remota es el origen y la ruta de Mac es el destino. El comando utiliza recursión (-r), salida detallada elemento por elemento (-i), comparación por suma de comprobación (checksum) (-c) y modo de prueba (-n). La documentación de rsync indica que las pruebas en seco no realizan cambios; la salida desglosada ofrece una lista concisa de las actualizaciones propuestas. En esta dirección, un elemento listado significa que el origen remoto difiere de, o falta en, el destino local. El manual de rsync documenta las ejecuciones en seco, los cambios desglosados y la comparación por suma de comprobación.
El modo de suma de comprobación lee los datos de los archivos en ambos lados para comparar el contenido, por lo que puede tardar más y consumir más operaciones de E/S de disco que la comprobación rápida predeterminada de rsync, la cual se basa en el tamaño del archivo y la fecha de modificación. Use -nic cuando el contenido sea prioritario incluso si las marcas de tiempo o los tamaños pudieran no revelar un cambio. Para una pasada preliminar más rápida, use -rin en su lugar; eso informa los cambios detectados por la comprobación rápida de rsync y puede omitir cambios de contenido cuando coinciden tanto el tamaño como la fecha de modificación. La vista previa no muestra las líneas modificadas dentro de los archivos.
Invierta las dos rutas si la copia de Mac debe tratarse como origen y la copia remota como destino. La dirección importa: los marcadores desglosados de rsync reflejan lo que actualizaría en el destino. Conserve -n mientras inspecciona los resultados. Elimínelo únicamente si decide deliberadamente realizar una transferencia; rsync es una herramienta de copia, no de fusión bidireccional.
Leer el contenido de una diferencia en un archivo de texto
Para inspeccionar los cambios reales de línea por línea, compare dos archivos locales con diff -u. Primero copie una versión en una ubicación temporal separada utilizando su método de transferencia aprobado habitual, o use una copia del proyecto que ya tenga localmente. Luego ejecute:
diff -u \
"/Users/you/Projects/site/config/settings.yml" \
"/Users/you/Desktop/settings-remote.yml"
El formato de salida unificado coloca el contexto cercano alrededor de las líneas modificadas. Las líneas con el prefijo - provienen del primer archivo; las líneas con el prefijo + provienen del segundo. diff es una comparación de contenido, por lo que no transferirá ni fusionará ediciones. Para todo un árbol de directorios local, diff -ru local-folder remote-folder compara los archivos correspondientes de forma recursiva, pero la carpeta remota debe estar montada o disponible de algún otro modo como ruta local. El manual de GNU Diffutils explica la comparación recursiva de directorios y la salida unificada; las opciones de comandos de macOS pueden variar, así que verifique man diff en su Mac si se rechaza alguna opción. Manual de GNU Diffutils.
Comprenda los límites antes de actuar
Una vista previa limpia de rsync significa que no se detectaron diferencias utilizando las reglas de comparación y las rutas seleccionadas. No muestra una revisión lado a lado, no resuelve ediciones en conflicto ni garantiza que todas las propiedades del sistema de archivos sean equivalentes. La opción de suma de comprobación de rsync compara el contenido de los archivos, mientras que los metadatos como permisos y marcas de tiempo dependen de las opciones que elija. Además, los árboles de archivos pueden cambiar después de la vista previa si alguien edita cualquiera de las copias.
Si el sistema remoto no proporciona acceso mediante SSH o rsync, este flujo de trabajo no funcionará tal como está redactado. Utilice un método de acceso permitido por ese sistema, cree dos copias locales accesibles y compárelas con diff u otra herramienta de comparación adecuada. No ejecute un comando de transferencia en lugar de la vista previa a menos que desee su comportamiento de actualización de origen a destino.
Fuentes
Conectarse a servidores en Terminal en la Mac — Soporte técnico de Apple
ssh(1) — Páginas del manual de OpenBSD — OpenBSD
Página del manual de rsync(1) — The Samba Project
Comparing and Merging Files — GNU Project