¿Cómo maneja Dropbox los cambios de nombre de archivo y contenido?

Puede obtener alguna pista de esta pregunta que se hizo en el Centro de ayuda de Dropbox.

Dropbox: ¿Dropbox siempre carga / descarga todo el archivo cada vez que se realiza un cambio?

Antes de transferir un archivo, comparamos el nuevo archivo con la versión anterior y solo enviamos la parte del archivo que cambió. Esto se llama un “diferencial binario” y funciona en cualquier tipo de archivo. Dropbox comprime archivos (sin pérdida de datos o calidad) antes de transferirlos también. De esta manera, tampoco tendrá que preocuparse por Dropbox volver a cargar un archivo o perder ancho de banda.

Para obtener una respuesta más completa, como no estoy trabajando en Dropbox, adivinaré lo que podría suceder, y con la eficacia de Dropbox, puedo apostar a que está muy cerca de lo que hacen.

Primero, pensemos en lo que sucede después de agregar cualquier archivo a Dropbox: se calcula un valor hash a partir del contenido del archivo y se almacena en su computadora (así como en Dropbox). Luego, cuando agrega otro archivo, Dropbox buscará los archivos con el mismo valor hash y, si encuentra uno, los comparará. Finalmente, si la comparación resulta en la igualdad de los archivos, el nuevo archivo no se cargará en absoluto, y solo se cargarán algunos metadatos (que dicen que el archivo recién creado X es igual a un archivo existente Y).

Además, no importa que Dropbox sepa si se cambió el nombre del archivo o si se creó un nuevo archivo. En realidad, cuando cambia el nombre de un archivo, puede pensar que se mueve el archivo, lo que puede suponer que copia el archivo al nuevo lugar y elimina la copia original.

Luego, lo que sucede en el primer paso de cambiar el nombre del archivo (que es copiar el archivo al nuevo lugar), Dropbox descubriría que la nueva copia es igual a la copia original y solo crearía un puntero a la copia original. Después de eso, cuando se elimina la copia original, solo se elimina su puntero de los datos, pero la nueva copia todavía tiene un puntero a los mismos datos. En consecuencia, cambiar el nombre del archivo X a Y solo daría como resultado la transferencia de dos registros de metadatos:

  1. Se crea un nuevo archivo llamado X que apunta a dataOf (Y)
  2. El archivo llamado Y se elimina (y no elimine el contenido, ya que X todavía lo señala)

Ahora que sabe sobre el mecanismo de cambio de nombre de archivo, volvamos al caso más general de lo que sucede cuando crea varias copias de un archivo y realiza un cambio en ellas. Es decir, se vuelve más interesante y crear un gráfico de versiones puede ser útil.

Continuemos con este escenario en el que tenemos un archivo llamado X en el cuadro desplegable. [El archivo X se transferirá al sitio web de Dropbox con sus metadatos sobre el nombre, la ruta, etc. Se crea un nodo llamado XData en el gráfico del archivo y X apunta hacia él].
Luego, copiamos X y lo nombramos Y [El archivo Y es igual a X, por lo que solo se comunican estos metadatos y en el gráfico del archivo, Y apuntará a XData].
Después de eso, copiamos X nuevamente y lo nombramos Z [El archivo Z es igual a X, por lo que solo se comunican estos metadatos y en el gráfico del archivo, Z apuntará a XData].

En este momento, el esquema se ve así:


Luego, cambia una línea en el archivo Y. El cambio se detectaría usando “diff binario” y solo se comunicaría el cambio:


Y luego, suponiendo que cambie las mismas líneas en Z, Dropbox determinará su igualdad con Y utilizando el mecanismo de hash que describí anteriormente en el gráfico y se convertiría en:


Este fue un ejemplo simplificado que no consideró el historial de versiones, ya que es sencillo y solo agrega algunas complejidades y detalles innecesarios.

No sé Dropbox interno … basado en la mayoría de la ingeniería inversa disponible parece que usan suma de comprobación en el nivel de bloque de archivo.

copia de seguridad: ¿cómo funciona la versión de Dropbox / carga archivos grandes? – Falla del servidor

Alguna referencia útil
1. rsync de código abierto comprobado que cambia la transferencia de archivos basada. Parece que la mayoría de los jugadores como Dropbox usa una variante de soluciones rsync.
2. Dropship (software): el mejor trabajo de ingeniería inversa en torno al funcionamiento de Dropbox.

More Interesting

¿Dónde se carga la información en un 'almacenamiento en la nube'? ¿Existe un límite para la cantidad de información virtual que podemos almacenar en el mundo?

¿Cuál es el mejor servicio en la nube para implementar sus aplicaciones Azure, AWS, Google u otro?

¿Qué es más seguro para la base de datos: nube o hardware (servidores de montaje en bastidor, etc.)?

¿Hay algo más avanzado que la tecnología de almacenamiento en la nube?

¿Cuál es la diferencia real entre un centro de datos local y una nube privada?

¿Cómo y por qué Amazon entró en el negocio de la computación en la nube? Se rumorea que querían "arrendar" su exceso de capacidad fuera de la temporada de vacaciones (noviembre-enero). ¿Es eso cierto?

¿Es posible usar Microsoft Word en la nube?

¿Cuáles son los principales pros y contras del uso de Video Vigilancia como servicio (VSaas)? ¿Es esta tecnología realmente el futuro de VS?

¿Cuáles son mis perspectivas de trabajo si tengo una certificación de Amazon Cloud Architecture?

¿Por qué no todas las películas (EE. UU. Y extranjeras) se muestran en la nube y están disponibles para pago por visión o descarga legal?

¿Cuál es el mayor desafío para la adopción de la nube en el espacio empresarial?

Para los sistemas de cámaras de seguridad residenciales para interiores, ¿cuáles son los beneficios y los inconvenientes del almacenamiento en la nube en comparación con el NVR (grabador de video en red)?

Cómo usar Hadoop con la nube

Estoy buscando una plataforma en la nube gratuita que sea compatible con QuickBooks. ¿Hay alguna?

¿Conoces alguna solución de alojamiento en la nube que también proporcione un panel de control que pueda usar para instalar varios servicios en mi instancia (como elasticsearch, redis, etc.)?