osx - solucion - ¿Cómo funciona el cliente DropBox Mac?
sincronizacion selectiva dropbox iphone (6)
Dos sugerencias:
El primero le permitirá escribir una aplicación que aparece como un sistema de archivos y hace todo lo correcto; este último le permitirá mover todo en el lado del servidor y dejar que el usuario simplemente monte su servicio como un recurso compartido de archivos.
He estado mirando al cliente DropBox Mac y actualmente estoy investigando la implementación de una interfaz similar para un servicio diferente.
¿Cómo interactúan exactamente con el buscador como este? Dudo mucho que estos objetos representados en la carpeta sean documentos reales descargados en cada carga. Deben descargar dinámicamente a medida que se necesiten. Entonces, ¿cómo puede mostrar estos elementos en el buscador sin tener objetos del sistema de archivos reales?
¿Alguien sabe cómo se logra esto en Mac OS X?
¿O cualquier puntero a la API de Apple u otros proyectos de código abierto que tengan una integración similar con el buscador?
Dropbox en el cliente está escrito en python. El cliente parece usar una base de datos sqlite3 para indexar archivos. Supongo que Dropobox dividió un archivo en fragmentos para reducir el uso de ancho de banda. Por cierto, si dos personas tienen el mismo archivo, incluso si no se conocen entre sí, el servidor puede optimizar y evitar transferir el archivo más veces, solo copiándolo en el lado del servidor.
Dropbox no funciona con MacFUSE o WebDAV, aunque esas pueden ser soluciones perfectas para lo que estás tratando de lograr.
Si funcionara con esas cosas, no funcionaría cuando no estuvieras conectado, ya que ambos dependen del servidor para almacenar la información real y Dropbox no. Si salgo de Dropbox (hecho a través del elemento del menú) y me desconecto de la red, aún puedo usar los archivos. Eso es porque los archivos están almacenados aquí en mi disco duro.
También significa que no es necesario "descargar los archivos en cada carga", ya que en realidad están almacenados en mi máquina aquí. En cambio, solo los deltas se envían por cable y la aplicación de Dropbox (que se ejecuta en segundo plano) actualiza los archivos de manera adecuada. Yendo para otro lado, la aplicación Dropbox busca los archivos en la carpeta de Dropbox, y cuando cambian, envía los deltas apropiados al servidor, que los propaga a otros clientes.
Esta configuración tiene algunas ventajas decisivas: funciona cuando no está conectado, es un orden de magnitud más rápido y es transparente para otras aplicaciones, ya que solo ven archivos en el disco. Sin embargo, no tengo idea de cómo se trata con los conflictos de combinación (que podrían surgir fácilmente con uno o más clientes fuera de línea), que no son un problema si el servidor es la única copia y cada edición cambia esa copia central.
Donde realmente brilla Dropbox es que tienen un truco adicional que identifica los elementos en la carpeta de Dropbox con su estado de sincronización actual. Pero eso no es lo que preguntas aquí.
En cuanto a la cuestión que nos ocupa, definitivamente debe considerar MacFUSE y WebDAV, que podrían ser soluciones perfectas para su problema. Pero la forma de hacer las cosas de Dropbox, con una aplicación en segundo plano que cambie los archivos reales en el disco, podría ser una mejor solución.
Es probable que Dropbox utilice FSEvents para observar los cambios en el sistema de archivos. Es una gran API e incluso puede agrupar los cambios que ocurrieron mientras tu aplicación no se estaba ejecutando. Es la misma API que usa Spotlight. La aplicación de la barra de menú probablemente hace la observación en sí misma (ya que reiniciarla puede corregir las cargas que se cuelgan, por ejemplo).
No hay forma de que usen MacFUSE, ya que eso requeriría instalar la extensión del kernel de MacFUSE para que funcione Dropbox, y como definitivamente no lo instalé, dudo mucho que lo estén usando.
Para mí, se siente como un sistema de control de revisiones muy modificado. Tiene todas las características: actualiza archivos basados en deltas, opciones para recuperar o restaurar viejas revisiones de archivos. Casi parece que están usando git ( GitFS ?), O algún sistema de archivos que diseñaron.
También puedes probar File Conveyor . Es un daemon de Python capaz de detectar al instante los cambios de FS (en Linux a través de inotify
, en OS X a FSEvents
), procesando los archivos y sincronizándolos con uno o más destinos.
Protocolos admitidos: FTP, SFTP, Amazon S3 (CloudFront también es compatible), Rackspace Cloud Files. Se puede extender fácilmente. Utiliza django-storages
.
"Procesamiento de archivos": por ejemplo, optimización de imágenes, transcodificación de videos; esto se concibió originalmente para ser utilizado para enviar activos estáticos a una CDN en el contexto de la aceleración de sitios web)