2012-10-06 18 views
13

Sabemos que los clientes de escritorio de Dropbox utilizan un algoritmo binario diff para descomponer todos los archivos en bloques y solo cargar bloques que aún no tiene en la nube (https://serverfault.com/questions/52861/how-does-dropbox-version-upload-large-files).Subidas diferenciales/incrementales de Dropbox utilizando la API REST

Sin embargo, la API de Dropbox, por lo que veo, solo puede cargar todo el archivo (/files_put, /files (POST)) cuando se necesita una sincronización.

¿Hay alguna manera de hacer la sincronización diferencial/incremental con la API de Dropbox, es decir, cargar solo la parte modificada del archivo como lo hacen los clientes de escritorio?

Si esto no es posible, ¿cuáles son las mejores prácticas para sincronizar periódicamente archivos grandes que tienen pequeños cambios con la API de Dropbox?

+0

Gran pregunta: ¿alguna vez encontró una respuesta? – DoctorG

+0

Desafortunadamente no. Regresaré a esta publicación si encuentro algo relevante. –

+0

AFAIK, puede descargar archivos por bloques utilizando la solicitud de recuperación de rango HTTP (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2) API Dropbox HTTP lo admite (al menos para descargar) archivos), no estoy seguro acerca de la carga. Ver más detalles sobre/files (GET) método: https://www.dropbox.com/developers/core/docs –

Respuesta

4

Lamentablemente, esto no es posible y sospecho que nunca estará disponible.

Después de hacer un poco de investigación, encontré una solicitud de función for delta-syncing to be integrated into the API. Dropbox no ha respondido, ni la comunidad ha votado a favor de esta solicitud.

Me gustaría adivinar que la razón por la que Dropbox no ha proporcionado esta funcionalidad, y probablemente nunca lo hará, es porque esta es una característica peligrosa en manos de desarrolladores desconocidos.

Considere el caso en el que escribe una aplicación que utiliza un sistema de actualización delta para actualizar archivos de gran tamaño. Prueba a fondo su aplicación y la publica en una tienda de aplicaciones. Un par de semanas después de su lanzamiento inicial, y numerosas descargas, comienza a recibir malas críticas y quejas porque se las pudo pasar por alto un caso de prueba muy específico.

Dentro de este caso específico con errores, ha calculado mal un diferencial compensado por 1 byte. ¡Oh no! ¡Ya corrompiste miles de archivos para cientos de usuarios!

Teniendo en cuenta esta posibilidad, creo que personalmente solicitaría que Dropbox NUNCA proporcione dicha función de desarrollo. Si integraran tal función en la API, estarían rompiendo su propósito n. ° 1: proporcionar copias de seguridad en la nube confiables, consistentes y seguras, & de sus archivos importantes.

+3

No estoy de acuerdo con su conclusión: ser capaz de cometer errores no debería ser una razón para no proporcionar tal funcionalidad. No puedes (y no deberías) cuidar a los desarrolladores. Siempre y cuando no hagas las cosas peligrosas a propósito, y proporciones advertencias y residuos agradables cuando las cosas podrían ser peligrosas, entonces no veo ningún problema en proporcionar algo como esto. –