Aquí tienes una solución paso a paso para Google Drive v49 (podría no funcionar en futuras versiones):
- Salga de Google Drive (haga clic en el icono de Google Drive en la barra de menús, luego haga clic en la rueda dentada y luego en Salir).
- Guardar este archivo en algún lugar como
change_gdrive_smb_port.py
(Ej: curl -LO https://gist.githubusercontent.com/emersonford/85cc74f7f90c81d1b75c3c246124591d/raw/442834222e2aaa2be61badb6e84f53183ee10624/change_gdrive_smb_port.py
).
- Lee tú mismo el script para saber que es seguro ejecutarlo.
- Ejecuta este script con
python3 change_gdrive_smb_port.py
. Le dará algunas indicaciones cuando haya encontrado una cuenta y a qué puerto cambiar el puerto SMB de esa cuenta. Estos puertos deben ser puertos no utilizados en su sistema.
- Reinicia Google Drive.
- Ejecutar el
mdutil -i on
el comando script escupe.
- Dale a Spotlight algo de tiempo para indexar todo en Google Drive. Ahora debería permanecer activado.
Si mi script resulta que rompe Google Drive o si quieres restablecer este cambio, todo lo que tienes que hacer es eliminar core_feature_config
de ~/Library/Application Support/Google/DriveFS/<ACCOUNT_NUM>
y reiniciar Google Drive.
EDITAR: Esto no es tan permanente como pensaba. Parece que Google puede introducir cambios de forma remota en el archivo "feature_config", lo que han estado haciendo una vez al día por lo que parece. Cuando ellos empujan los cambios, terminan sobrescribiendo los cambios que mi script hizo a core_feature_config
...
Como mínimo, siempre puedes volver a ejecutar el script y reiniciar Google Drive (encadénalo con pkill "Google Drive" && sleep 5 && echo "yes\n[PORT_NUM]" | python3 change_gdrive_smb_port.py && open /Applications/Google\ Drive.app
). No es genial, pero preserva la base de datos de índices de Spotlight para no tener que esperar / desperdiciar ciclos de CPU en reindexar cada vez.
Actualizaré esto de nuevo si encuentro una solución.
Explicación técnica
Google Drive solía utilizar un FUSE implementación llamada DriveFS en MacOS que parece haber tenido soporte de indexación de Spotlight incorporado. Al parecer, y todo esto es una especulación por mi parte, ya que no soy un empleado de Google, tuvieron muchos problemas para llevar esto a los nuevos Macs M1 basándose en esto artículo . Incluso sin eso, las implementaciones de FUSE tienden a ser realmente peliagudas de mantener, por lo que no les culparía por querer dejarlas.
Supongo que, como parte de su despliegue de Google Drive para todo el mundo, querían asegurarse de que todo el mundo pudiera ejecutar Google Drive sin tener que jugar con las extensiones del kernel, por lo que parecen haber migrado el sistema de archivos de Google Drive a una implementación de servidor Samba, y luego montarlo con el cliente Samba integrado de MacOS (de ahí que ahora veas 'localhost' montado en Red). En mi opinión, esto es muy inteligente.
Ahora bien, el problema de esto para Spotlight es doble. En primer lugar, Apple ahora deshabilita por defecto Spotlight en las unidades de red (probablemente con buena razón), por lo que ahora tienes que activar manualmente Spotlight en Google Drive.
En segundo lugar, Google Drive establece el enlace del puerto del servidor Samba a -1, lo que significa que el sistema operativo elige un puerto disponible al azar para usted. No estoy seguro de cuándo cambió esto, pero Spotlight ya no coloca su índice en la carpeta Root con el nombre Spotlight-V100
. Todos los índices de Spotlight se almacenan ahora en /var/db/Spotlight-V100
; además, para las unidades de red, ese índice se llama algo así como smb%3A%2F%2FDRIVE@localhost%3A59999%2FGoogle%2520Drive
. Si te fijas bien, el número de puerto de la unidad de red forma parte del nombre del índice de Spotlight. Esta es la razón por la que la indexación de Spotlight parece desactivarse después de algún tiempo. Cuando Google Drive vuelve a montar el FS (a veces al azar, a veces en la desconexión de la red), es probable que obtuvo un nuevo puerto del sistema operativo para enlazar. Así que para Spotlight, esto parece una unidad de red completamente diferente que no ha habilitado la indexación de Spotlight en, por lo tanto, no sólo tiene que volver a habilitar la indexación, sino también esperar a Spotlight para indexar todo de nuevo.
He escarbado en los troncos (en ~/Library/Application Support/Google/DriveFS/Logs
) y me di cuenta de esto en la sección de inicio:
2021-07-22T18:12:33.759ZI [6139763:CrBrowserMain] global_features_manager.cc:266:CompositeAll Composited global features *WITHOUT* overrides: drive_dot: true
...
mac_smb_port: -1
...
así que parece que cambiar el puerto SMB a un puerto estático es una preferencia, sólo tiene que averiguar dónde. Me tomó un poco para encontrar esto, ya que no parece ser un ajuste plist, pero el uso de strings
pude deducir que estaba en core_feature_config
que descubrí que era un archivo binario en el protobuf formato. Así que sólo había que encontrar el campo correcto y reemplazar el mac_smb_port
con lo que quería (con la codificación correcta del protobuf). ¡Una vez que lo resolví con el script correcto, Spotlight ha sido estable para mí desde entonces!
Sin embargo, no creo que esto sea un problema por mucho tiempo, así que si no te sientes cómodo usando mi script y estás dispuesto a esperar, creo que puedes esperar. O bien la gente de Google Drive añadirá un número de puerto estático (o un ajuste) para solucionar este problema, o bien migrarán al uso del Proveedor de archivos API (que he descubierto que se puede activar ahora mismo cambiando una bandera diferente en core_feature_config
), que probablemente tendrá un mejor soporte de Spotlight incorporado.