20 votos

La indexación de Spotlight del flujo de archivos de Google Drive se desactiva al reiniciar

Recientemente he recibido un Macbook Air M1, 2020 que ejecuta MacOS Big Sur 11.2.3. Confío en el flujo de archivos de Google Drive para mi trabajo y hasta ahora he conseguido instalar con éxito el programa. Sin embargo, parece que estoy teniendo problemas para indexar la unidad con Spotlight. Spotlight no indexa automáticamente la unidad, y necesito ejecutar: sudo mdutil -i on /Volumes/GoogleDrive/ cada vez que arranco la máquina. Tarda un poco en indexar la unidad de 80 gigabytes y luego funciona como a mí me gusta. El único problema es que cuando reinicio la máquina parece que el índice ha desaparecido y cuando ejecuto sudo mdutil -s /Volumes/GoogleDrive/ indica que la indexación está desactivada. Espero que haya una solución en la que el índice se mantenga para no tener que activarlo y esperar cada vez que arranque la máquina.

Hay instrucciones separadas para instalación de GDFS en un Mac M1 , pero como mi instalación funcionó sin problemas no arranqué en modo de recuperación ni nada parecido a lo que sugiere ahí. Me pregunto si permitir la gestión por parte del usuario de las extensiones del kernel ayudará a este problema, ya que prefiero no manipular demasiado este ordenador de trabajo.

18voto

Marcelo Riveros Puntos 21

Aquí tienes una solución paso a paso para Google Drive v49 (podría no funcionar en futuras versiones):

  1. 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).
  2. 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 ).
  3. Lee tú mismo el script para saber que es seguro ejecutarlo.
  4. 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.
  5. Reinicia Google Drive.
  6. Ejecutar el mdutil -i on el comando script escupe.
  7. 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.

0 votos

Cuando se ejecuta dice unable to find mac_smb_port field! . no estoy en M1, tengo el mismo problema en intel mac, cada vez que me restard mdutils está desactivado

1 votos

@EsseTi ¿podrías volver a ejecutar los comandos con las instrucciones actualizadas que te proporcioné?

0 votos

Pude hacer que el script se ejecutara, sin embargo al reiniciar la indexación se vuelve a desactivar. al volver a ejecutar el script me dice que el puerto se restableció a -1 . como si borraran lo que hace el script

2voto

Doug-W Puntos 797

Esto me estaba volviendo loco también, y estaba preparado para intentar configurar un cron para ejecutar la solución Python script de @emersonford (que se ve muy bien y gracias por cierto), pero creo que puedo haber encontrado una mejor solución para mis necesidades.

Me di cuenta en GoogleDrive preferencias bajo Opciones de sincronización de Google Drive > My Drive si se cambia de Corriente a Espejo y, a continuación, elija una carpeta local (yo lo hice ~/gd ), spotlight parece indexar todos los archivos.

Change from Streaming to Mirror

Acabo de activar esto y parece que funciona hasta ahora, crucemos los dedos para que continúe.

0 votos

Obviamente, si cambias a mirror, el archivo se almacena localmente y Spotlight funciona. La pregunta original es hacer que funcione con el modo de flujo.

0 votos

Ah, sí, ni siquiera vi "Stream" en el título de este post. Terminé aquí después de buscar en Google el problema de los focos y Stream no era un requisito para mí, así que pensé que tal vez puede ser útil para algunos otros también, pero, cierto, mi solución no es para usted si usted quiere Stream y no Mirror.

0 votos

Sí, una solución muy diferente. Sin embargo, me alegro de que te funcione.

2voto

MB34 Puntos 128

Sé que la mayoría de ustedes están interesados en resolver el problema cuando streaming El contenido de Google Drive (opción "Stream Files" en 'Settings', ver la captura de pantalla de @kortina).

Pero para aquellos (como yo) que han acabado leyendo este post porque Spotlight no indexa su carpeta de Drive a pesar de utilizar la opción "Mirror Files". la solución es sencilla: seguir estos direcciones y reiniciar.

Edición: aquí están las instrucciones:

Vaya a Preferencias del Sistema/ Spotlight. Haz clic en la pestaña Privacidad. Arrastra la carpeta de Google Drive a la lista de ubicaciones en las que Spotlight no puede buscar. Espera un momento y luego haz clic en el botón de eliminación (-) para quitarla de la lista. Sal de Preferencias del Sistema. Ahora Spotlight comenzará a indexar la carpeta, lo que puedes comprobar mirando los procesos activos en el Monitor de Actividad. Cuando termine, reinicia tu Mac.

Funcionó para mí, ¡funcionará para ti!

0 votos

Aunque este enlace puede responder a la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas con enlace pueden dejar de ser válidas si la página enlazada cambia. - De la revisión

0 votos

Editado para arreglarlo (gracias @agarza)

1 votos

Esto solía funcionar, pero no funciona con Big Sur ni con las nuevas versiones de OSX.

1voto

HectorMac Puntos 3961

Para los usuarios de Alfred App (como yo: ¡recomendado!) hay una solución fácil: https://www.alfredapp.com/blog/guides-and-tutorials/google-drive-workflow/ - Todavía estoy tratando de hacerlo funcionar, pero aparentemente otros no tienen problemas para configurarlo y hacerlo funcionar.

0 votos

La culpa es mía, añadí una cuenta a Google Drive y las carpetas que usé como ámbito para Alfred ya no eran las correctas. Actualicé Search Scope dentro de Alfred y ahora todo vuelve a funcionar, sin el mencionado flujo de trabajo. Lo mantengo como respuesta porque quizás otros lo encuentren útil.

0 votos

El flujo de trabajo anterior no funciona en mi máquina porque todavía uso mi MBP de mediados de 2010 (para mi completa satisfacción) y aparentemente es demasiado viejo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X