3 puntos por GN⁺ 2023-09-24 | 1 comentarios | Compartir por WhatsApp
  • Debido a conflictos de archivos ocultos en iCloud Drive, desaparecieron párrafos escritos recientemente o cambios de código, y la pérdida ocurrió antes de que se guardaran los respaldos
  • El conflicto se dio porque se asumió que había distintas versiones del mismo archivo en Mac y iPhone, pero el archivo afectado nunca se había abierto en el iPhone
  • Dropbox deja aparte los archivos en conflicto, pero iCloud Drive no los muestra en el sistema de archivos, así que el popup de selección solo aparece en editores con soporte para manejo de conflictos
  • En editores sin manejo de conflictos, como Textifier, Xcode y Obsidian, iCloud elige qué versión guardar, y con el tiempo la versión correcta puede ser sobrescrita en los respaldos
  • Es más seguro mantener los datos importantes fuera de iCloud Drive y vigilar los cambios de los archivos clave con un repositorio Git; además, también se está desarrollando Cloud Cub para archivos que deban permanecer en iCloud

Conflictos de archivos ocultos en iCloud Drive

  • Mientras se escribía un documento, desapareció un párrafo recién ingresado y, durante el desarrollo de una app, Xcode empezó a mostrar varios errores en código que antes no tenía problemas
    • Se habían borrado cambios recientes en varios archivos
    • La pérdida ocurrió antes de que Time Machine o Backblaze llegaran a guardar un respaldo
  • La causa fue un conflicto de archivos detectado por iCloud Drive
    • iCloud Drive determinó que había versiones distintas del mismo archivo en Mac y iPhone y que no podía fusionarlas automáticamente
    • Sin embargo, los archivos afectados nunca se habían abierto en el iPhone
    • Como la carpeta Documents del Mac se había movido a iCloud, esos archivos estaban en iCloud
  • Cuando hay un conflicto de versiones, Dropbox guarda además un archivo en conflicto con un nombre como “(John Doe’s conflicted copy)”
  • iCloud Drive no muestra ese mismo conflicto en el sistema de archivos
    • Si se abre el archivo en un editor con soporte para manejo de conflictos, aparece un popup preguntando qué versión se quiere conservar
    • En editores sin manejo de conflictos, como Textifier, Xcode y Obsidian, iCloud decide qué versión guardar en el disco y en los respaldos

Condiciones de recuperación y formas de responder

  • Con el paso del tiempo, si un respaldo nuevo sobrescribe un respaldo anterior que sí tenía la versión correcta, el contenido puede perderse de forma permanente
  • Para recuperarlo, hay que abrir ese archivo en un editor que soporte resolución de conflictos
    • El editor usado como ejemplo es iA Writer
    • Después de mover el archivo fuera de iCloud Drive, este método tampoco ayuda
    • En las pruebas, al volver a mover a iCloud un archivo sin modificar, reaparecía el popup con la versión en conflicto, pero si el archivo había sido editado o se siguió trabajando con una copia, puede que eso no ocurra
  • Ocultar los conflictos de versiones puede parecer una decisión amigable para el usuario, pero eso también puede hacer que la pérdida de datos no se descubra hasta años después, cuando se vuelva a abrir un documento importante
  • Hasta que iCloud Drive exponga los conflictos de versiones en el sistema de archivos o en una ubicación central de fácil acceso, es más seguro sacar los datos importantes de iCloud Drive
  • Para los archivos que deban permanecer en iCloud Drive, se está creando Cloud Cub, que detecta y resuelve conflictos de sincronización ocultos

1 comentarios

 
GN⁺ 2023-09-24
Opiniones de Hacker News
  • Me pasó algo parecido: en Notes del iPhone de mi esposa estaba activada la sincronización en la nube y, como pensé que no hacía falta, la desactivé; entonces mi esposa me dijo: “¿Dónde están todas mis notas? ¿Qué hiciste?”
    Me dio un sudor frío, pero recordé que había un iPad con la app Notes sincronizada, así que lo abrí de inmediato y apagué el WiFi para “preservar” las notas.
    Llamé a Apple, y la persona de soporte encontró una forma de evitar que se borraran: copiar y pegar cada nota en una carpeta nueva.
    Fueron varias horas bastante estresantes, y creo que Apple debería haber dado más advertencias o pop-ups sobre el impacto completo de una acción así.
    Además, me enteré de que soporte técnico de Apple básicamente puede conectarse al teléfono como con “VNC”, ver la pantalla y cambiar configuraciones. Creo que pidieron permiso y presioné “aprobar”, pero hasta verlo en acción ni sabía que existía esa función.

    • No intento justificar este problema, pero me sorprende que alguien de Apple haya ayudado por teléfono con un problema de sincronización de Notes e incluso con la recuperación.
      Y además lo hicieron aunque la causa parecía ser un error del propio usuario. Mi empresa paga mucho dinero por productos de Google, pero es muy poco probable que Google ayude por teléfono con algo así.
      Antes he hablado con un representante por cosas como control de acceso, pero si les pidiera ayuda porque desaparecieron notas de Keep, siento que me contestarían, cortésmente, que me fuera al diablo. De hecho, las notas de Keep también desaparecen a veces.
    • Si la situación es la que estoy pensando, con simplemente volver a activar la sincronización deberían haber reaparecido todas las notas.
    • Según recuerdo, al desactivar la sincronización aparece una pregunta del tipo “¿Desea continuar? Todas las notas de iCloud se eliminarán del iPhone”.
      Me parece que el problema de tu esposa estuvo más del lado de la persona que administró el dispositivo iOS que de Apple.
    • Que soporte técnico de Apple pueda entrar al teléfono como con “VNC”, ver el contenido y cambiar configuraciones parece una posible vulnerabilidad de seguridad. Me pregunto si hay alguna forma de desactivar eso permanentemente.
    • Me interesa saber más sobre esa función de “VNC”: si es solo para iPad o también funciona en iOS, si la solicitud de aprobación fue un pop-up del sistema, si se abrió alguna app con nombre propio, si se veía en pantalla lo que realmente hacían y si está documentado en algún lugar.
  • Estoy de acuerdo un millón de veces. Pero esto no parece ser un problema exclusivo de iCloud, sino una tendencia fundamental de todo el software de Apple.
    Me pasa repetidamente también al resaltar PDFs en Books. A veces vuelvo a abrir un PDF y varias páginas que resalté recientemente ya no están.
    Mientras trabajo parece que se va guardando todo el tiempo, pero por alguna razón desconocida decide que la versión de las 11:35 es la versión principal más reciente, no la de las 11:45.
    El problema de que Apple sobrescriba silenciosamente contenido nuevo con una versión vieja lleva al menos 10 años.
    No entiendo cómo una falla crítica así llegó al sistema en primer lugar y cómo todavía no la han corregido.

    • Los dos problemas más difíciles en software son la invalidación de caché, poner nombres, errores por diferencia de uno y desbordamientos de búfer por ausencia forzada de índices de arreglo.
    • También tuve varios comportamientos raros al resaltar o anotar con el software predeterminado de macOS, y Skim resultó ser una alternativa bastante buena.
      Es gratis y tiene licencia BSD, pero hay que recordar que, si quieres ver los cambios en otras apps, tienes que exportar el PDF con las anotaciones incluidas.
      Si estás cansado del fondo anaranjado de Apple que mata el contraste o de no tener un resaltador amarillo de verdad, vale la pena probarlo. No tengo relación con el proyecto; solo agradezco que exista.
      https://skim-app.sourceforge.io/
    • Es un punto interesante. He usado computadoras Apple de forma intermitente y, más recientemente, desde 2015 hasta principios de este año; lo de que es un problema de filosofía me parece que tiene sentido.
      En hardware, también recuerdo que eliminaron de forma bastante brutal los disquetes, las unidades ópticas y hasta arquitecturas completas de CPU tres veces.
      En iCloud, esa actitud parece aplicarse también a los archivos. No digo que todo sea malo, pero mientras más envejezco, más se aleja de mis gustos.
    • La mayor parte de la infraestructura de iCloud está construida sobre instancias de Cassandra. Hay un buen paper relacionado, pero ahora no lo encuentro.
    • Si decidió que la versión de las 11:35 era la más reciente, ¿será que el reloj de algunos servidores estaba mal?
  • El autor sugiere usar git, pero git no se lleva bien con iCloud Drive.
    Antes tenía cientos de repositorios git en iCloud Drive y, cuando hacía un commit grande, todo iCloud Drive, de cientos de GB, se volvía a sincronizar con los servidores de Apple y tardaba un día.
    Escalé el caso con soporte de Apple hasta un nivel bastante alto para intentar resolverlo, pero nunca se solucionó. Ahora mantengo los repositorios git fuera de iCloud Drive.
    Parece que esto se activa si cambias rápidamente y al mismo tiempo cientos de archivos antes de que termine de sincronizarse el último cambio grande.

    • Pensaba que era casi de sentido común que no hay que mezclar sistemas de control de versiones como git con el versionado en la nube de unidades cloud como iCloud, OneDrive o Google Drive.
      No combinan bien, y en especial si hay varios dispositivos sincronizados con la misma unidad en la nube, hay espacio para toda clase de comportamientos raros e inesperados.
    • Soy el autor del texto original. Gracias por compartirlo.
      El problema es que una app que necesito usar no soporta ningún otro método de sincronización, así que para algunos archivos importantes tengo que usar iCloud Drive.
      Sin git, ni siquiera habría podido averiguar qué archivos cambiaron. Incluso con git, no puedo estar seguro de haber detectado todo. Me parece posible que un conflicto de sincronización de iCloud también pueda cambiar el contenido de git.
    • Para empezar, git tampoco se lleva bien con objetos binarios grandes.
    • Para carpetas importantes de iCloud Drive, suelo usar un proceso automático que hace rsync a algún otro lugar, y desde ahí aplico versionado automático con Git, Dropbox u otra cosa.
      No será ideal para datos muy grandes, pero la mayoría de las cosas que están en iCloud Drive y que quiero versionar de forma agresiva son texto o archivos pequeños, así que tener dos copias casi no pesa.
    • Como referencia, git también puede fallar de formas bastante extrañas en Dropbox por motivos similares. Antes usé git-remote-dropbox para intentar usar Dropbox como servidor git.
      [1] https://github.com/anishathalye/git-remote-dropbox
  • Una razón más importante para no usar iCloud Drive es que el cifrado de extremo a extremo no viene activado por defecto.
    Todo lo que guardes ahí puede ser leído por administradores de sistemas de Apple, personal de soporte y personas que puedan exigirle datos a Apple, como el gobierno de EE. UU., que hoy incluso puede hacerlo sin orden judicial.
    Es mejor no usar servicios que no tengan cifrado de extremo a extremo.
    Ahora iCloud sí tiene cifrado de extremo a extremo opcional, pero viene desactivado por defecto y está enterrado en la configuración, así que casi nadie lo usa.
    Yo uso Syncthing para mantener mis archivos en todos mis dispositivos. Tiene cifrado de extremo a extremo, es software libre y maneja los conflictos y las copias de versiones de forma razonable.
    También admite dispositivos no confiables dedicados solo a sincronizar que nunca pueden ver el texto plano, así que puedes tener nodos de forma segura en un VPS o en una ubicación externa.

    • Decir “no uses servicios que no tengan cifrado de extremo a extremo” y luego “iCloud también tiene cifrado de extremo a extremo opcional” es contradictorio. iCloud también puede tener cifrado de extremo a extremo.
      Convencer a amigos o familiares de tocar dos menús para activarlo es fácil, pero convencerlos de instalar y configurar Syncthing en varios dispositivos no lo es.
      Está bien defender Syncthing, pero decir que iCloud Drive es malo porque no activa por defecto una configuración con la que un usuario promedio podría perder todos sus datos si pierde la clave resulta un poco ridículo.
      Te aseguro que tu abuela preferiría mucho más poder llamar a Apple cuando olvide su contraseña y recuperar las fotos del pequeño Johnny, que tener algo más seguro por defecto.
    • También hay una objeción realista al cifrado de extremo a extremo. Para la gran mayoría de las personas, es mucho más probable perder todos sus datos por olvidar o perder la clave de cifrado que sufrir una filtración de datos por parte de un administrador o del gobierno.
      Yo también quisiera activar el cifrado de extremo a extremo, pero no confío en mí mismo lo suficiente como para no perder la clave.
    • No veo en qué se diferencia activar manualmente el cifrado de extremo a extremo en iCloud de buscar y usar por cuenta propia un proveedor que lo soporte por defecto.
      No es como en mensajería, donde la otra persona también tiene que activar el cifrado de extremo a extremo.
    • Obviamente parece más fácil presionar un botón en iCloud para activar el cifrado de extremo a extremo que cambiar por completo de proveedor de almacenamiento en la nube.
    • Puedes activar el cifrado de extremo a extremo desde Protección de datos avanzada en la configuración de la cuenta de iCloud.
      https://support.apple.com/en-ca/HT212520
  • A mí también me molestó bastante esto. Tenía mi biblioteca de Calibre en la carpeta Documents. ¿Dónde más la iba a poner, si además incluía respaldo gratuito?
    Pero hace poco descubrí que varias carpetas de libros dentro de la biblioteca estaban vacías, aunque deberían contener los archivos epub reales.
    La estructura de directorios y las entradas de la base de datos estaban ahí, pero habían desaparecido solo los archivos de libros. No todos: aproximadamente un 40% al azar.
    La conclusión es que no guardes en iCloud Drive nada que te importe, especialmente libros.

    • Consejo en broma, pero probablemente puedas conseguirlos de nuevo en Libgen.
  • Sobre la parte que dice: “Si abres un archivo en un editor que admite manejo de conflictos, aparece una ventana emergente preguntando qué versión conservar. Los editores sin manejo de conflictos, como Textifier, Xcode u Obsidian, dejan que iCloud decida qué versión guardar en el disco y en la copia de seguridad”, creo que parte de la responsabilidad también recae en los desarrolladores de apps que agregaron soporte para iCloud sin añadir un mecanismo de manejo de conflictos.
    Pero ¿por qué Xcode, que es una app de la propia Apple, no admite manejo de conflictos? El software de Apple debería marcar el estándar para los desarrolladores externos.
    Si Apple tampoco maneja los conflictos de versiones, es natural que otros desarrolladores tampoco lo hagan.

    • Soy el autor del post original. Creo que lo redacté de una forma algo ambigua. El punto clave es que es independiente del editor.
      Puedes perder contenido incluso usando un editor que admita manejo de conflictos.
      Si suponemos que escribes algo, lo guardas, cierras el editor y no vuelves a abrirlo, iCloud puede reemplazar el contenido de ese archivo y no hay forma de que el usuario se entere.
      La única manera de no perder datos es crear un repositorio Git o abrir periódicamente todos los archivos importantes en un editor que admita manejo de conflictos.
    • Que una app no haya implementado una función no significa que una API del sistema pueda borrar datos importantes en silencio.
      Esto no es un bug de Xcode, es un bug de iCloud.
  • Si pones archivos en iCloud Drive, el iPhone puede eliminar la copia local en cualquier momento.
    Si quieres sincronizar archivos y a la vez estar 100% seguro de que existe una copia local, tienes que tener el mismo archivo tanto en iCloud Drive como en la carpeta “En mi iPhone”.
    Por eso Apple Books, Numbers y todas las apps que usan iCloud Drive siguen eliminando copias locales.
    Creé una app sencilla de notas que usa iCloud Drive, y cuando cerraba la app iCloud eliminaba con avidez incluso archivos txt de 2 KB. A veces no los borraba, así que era bastante aleatorio.
    No importa que tengas mucho espacio de almacenamiento libre; iCloud también puede eliminar la versión local de archivos que usas constantemente.
    El soporte para desarrolladores de Apple dijo que no podían hacer nada. Ni siquiera los desarrolladores tienen una forma de marcar que un archivo nunca debe eliminarse.
    En la documentación oficial, Apple de hecho recomienda guardar todos los archivos del usuario en iCloud Drive y no dejar copias en “En mi iPhone”.

  • Tuve un problema parecido con contactos que desaparecían. Pasó durante un tiempo, pero al principio pensé que era error mío.
    Una mañana vi que había desaparecido el contacto de un amigo con quien había estado mensajeándome la noche anterior, y me di cuenta de que el problema era iCloud.
    Contacté al soporte de Apple y, después de probar todas las indicaciones básicas, el representante admitió que era un problema conocido, pero que no habían encontrado la causa raíz ni tenían solución.
    Me pidió que monitoreara los contactos para saber cuándo ocurría la eliminación, pero dijo que necesitaba darle un rango de unos pocos minutos.
    La razón fue que “el iPhone genera muchos registros, así que si no pueden señalar exactamente cuándo ocurrió, los ingenieros no pueden revisarlo”.
    Yo pensé que acotar el bug a un rango de 8 horas ya era bastante razonable, pero el representante dijo que eso era lo que habían dicho los ingenieros y exigió una precisión de minutos.
    Al final, como siempre que le paso un problema difícil al soporte de Apple, el representante dijo que me contactaría de nuevo, pero nunca volvió a llamar y no pasó nada.
    Moví mis contactos a Google y simplemente lo olvidé.

  • Revisé este problema. Apple, para no molestar demasiado a los usuarios con conflictos, eligió una estrategia de sincronización que pierde datos del usuario bajo ciertas condiciones
    Es decir, decidió no usar técnicas mucho más antiguas que habrían podido conservar las revisiones en conflicto
    El resumen está aquí
    https://www.youtube.com/watch?v=q8k1q6kf1W0

    • Para no interrumpir al usuario, podrían haber puesto los archivos duplicados en algún lugar como una carpeta de conflictos
      Así la gente habría podido buscar “¿qué hizo Apple con mis archivos?” y encontrar cómo recuperarlos
      Ya que hablamos de no interrumpir, en alguna actualización iOS cambió silenciosamente mi configuración de llamadas e hizo que el teléfono no sonara para algunos remitentes
      Era una especie de función basura para calmar la mente, pero como por la naturaleza del NHS es difícil que te vuelvan a llamar, me causó mucha ansiedad perder una llamada de un cirujano oncológico
  • En mi caso, iCloud Drive a veces simplemente no se sincroniza y se queda trabado en algo. Se puede ver el estado de sincronización en el ícono de iCloud Drive en Finder
    Cerrar todas las apps de macOS e iOS y ejecutar killall bird a veces lo soluciona. bird es el servicio de sincronización de iCloud