Como o Dropbox determina quando substituir o arquivo local ou substituir o arquivo em nuvem?

10

Quando o Dropbox encontra um arquivo no computador que é diferente da versão em nuvem daquele arquivo que conhece, como decide se deve sincronizá-los substituindo o arquivo local pelo arquivo em nuvem ou sincronizando-os substituindo o arquivo em nuvem por o arquivo local?

Para reformular:

  • Se a cópia do servidor e a cópia local de um arquivo forem diferentes,

  • e se o programa dropbox for iniciado e concluir a sincronização,

  • esses dois arquivos serão os mesmos.

Esses dois arquivos também serão idênticos a um dos arquivos antigos. Minha pergunta é qual --- a cópia antiga do servidor ou a cópia local antiga? Como isso decide?

Ein
fonte
Mmmm, não tenho certeza se a sua reformulação a torna mais clara. Mas eu acho que o Dropbox usa uma (versão do) soma de verificação de arquivo (e talvez data de alteração) para ver se o arquivo precisa ser carregado. (Possui os antigos em seu banco de dados local). Se a soma de verificação for diferente, ela será enviada para um upload. Se online, existe uma versão com uma data mais recente e uma soma de verificação diferente da antiga em seu banco de dados local, alguém deve ter alterado o arquivo e o arquivo será renomeado anexando "cópia em conflito". (é claro que isso é especulação e eu não encontrei confirmação desta linha, até o momento)
Rik

Respostas:

5

Não sei os detalhes técnicos disso, mas tenho a situação em que eu e meu assistente operamos uma caixa de depósito comum com dois computadores diferentes entrando e saindo em momentos diferentes.

A resposta para sua pergunta é que, quando você se conecta à nuvem, o Dropbox sabe (de alguma forma) que a versão atualmente na nuvem foi originalmente sincronizada no seu computador. Portanto, se a versão do seu computador for diferente, essa será a versão que será sincronizada com a nuvem.

Se dois computadores (digamos A e B) estiverem usando a mesma caixa de depósito e cada um fizer alterações offline, o primeiro computador ligado (digamos que seja o computador A) gerará uma sincronização de sua atualização para a nuvem. Então agora haverá a mesma versão (contendo a atualização A) em A e Cloud.

Quando o computador B é ligado, o Dropbox percebe que a versão do arquivo do computador B não é apenas diferente da versão atual da nuvem (o que é normal), mas é diferente da última vez que o Dropbox o sincronizou. Portanto, se fosse sincronizar o arquivo de B com a versão A, as alterações de B seriam perdidas. Então, o que o Dropbox faz é fazer uma cópia da versão B e adicionar "arquivo em conflito de B" ao nome do arquivo. O arquivo original de B é sincronizado com as atualizações A. O arquivo em conflito, contendo as atualizações B, é sincronizado com a nuvem e volta para A.

Exclusões e conflitos decorrentes da sincronização seletiva são tratados de maneira semelhante

Também surge um conflito se um dos computadores não fechar o arquivo antes de desligar. A sincronização não ocorre em um arquivo aberto; portanto, nesse caso, as atualizações de B serão sincronizadas e o arquivo aberto de A terminará em conflito. Isso pode ser uma grande dor para harmonizar, mas a culpa é nossa, não do Dropbox.

Espero que isto ajude.

Margie
fonte
1

Eu tenho informações parciais que começam a responder a esta pergunta. Não tenho certeza de quão útil isso é para usuários experientes, mas sei que usuários mais novos como eu acharão este relatório útil.

Além disso, resolver isso me deixa ainda mais intrigado com o fato de uma pergunta incrivelmente básica não ter nenhuma resposta oficial ou autorizada. A falta de documentação ou discussões disponíveis me diz que os usuários do Dropbox aceitam o que o Dropbox realmente faz como o que eles esperavam que ele fizesse nessas circunstâncias. (ou seja, eu nem diria que os usuários têm uma expectativa concreta na qual depositam o dropbox)

Exemplos de como o Dropbox se comportará:

Nos meus exemplos, o computador A e o computador B nunca são ligados ao mesmo tempo. Imagine um único usuário trabalhando sem colaboração em casa e no trabalho, com cada computador sendo desligado antes de voltar para o outro.

O que acontece quando a pasta dropbox de um computador não é idêntica à pasta dropbox na nuvem? Para maior clareza, prefiro imaginar como dropbox.exereage quando um computador tem uma pasta dropbox vazia . Irá dropbox.execonsiderar esses arquivos perdidos como "exclusões" (o que significa que irá removê-los a partir da pasta dropbox nuvem) ou "fora da data" (o que significa que irá criar novas cópias deles dentro da pasta dropbox local).

  1. Comece com uma situação em que o comportamento é óbvio: o computador A está ligado e o computador B está desligado. Se dropbox.exeestiver em execução e forem feitas alterações em A, elas serão propagadas para a pasta da nuvem e não vice-versa. Portanto, no momento, se a pasta de A estiver esvaziada, esses arquivos / pastas ausentes serão considerados "exclusões" e a pasta em nuvem será esvaziada.

  2. Suponha que B tenha uma pasta de caixa de depósito vazia e A crie arquivos e os sincronize com a pasta de caixa de nuvem. Se mudarmos para o computador B, a situação será que dropbox.exeinterpretará a pasta da caixa de depósito vazia de B como "desatualizada" e novas cópias da pasta da nuvem serão criadas em B.

  3. Agora, o menos óbvio: suponha que façamos algumas alterações em B e sincronizemos essas alterações com a pasta da caixa de depósito na nuvem. Se mudarmos para o computador A e - sem a primeira execução dropbox.exe- excluirmos as coisas da pasta dropbox de A, o que será executado dropbox.exedepois? Nesta situação dropbox.exe, interpretará os arquivos / pastas ausentes como novas exclusões que devem ser propagadas para a pasta da caixa de depósito na nuvem.

Acho confuso que nas situações 2 e 3 você dropbox.exeesteja ligado e encontre o mesmo estado "novo" em um novo computador que difere da pasta na nuvem, mas agirá de maneira diferente.

Se você deseja inventar uma regra que explique como dropbox.exefunciona, evidentemente não pode assumir que é uma função das três variáveis: (1) o que vê no computador agora, (2) o que vê na pasta da nuvem e (3) ) qual computador foi o último a sincronizar com a pasta na nuvem. (!!!)

Talvez a variável extra seja que o Dropbox se lembre da última sincronização de cada computador com a pasta da nuvem. Na situação 2, podemos supor que a última vez que o computador B foi sincronizado, ele sincronizou uma pasta vazia. Na situação 3, o Dropbox lembra que, na última vez que o computador A foi sincronizado, ele sincronizou uma pasta diferente do que é encontrado atualmente dentro da pasta.

Ein
fonte
11
Não é dropbox.exeapenas verificar o diretório offline e online. Como você indicou em seu último parágrafo, o dropbox mantém um registro de todos os arquivos armazenados localmente e online, para que ele saiba exatamente quando / o que (e quando / o que não) sincronizar. Dê uma olhada no meu dropbox-dir no C:\Users\<name>\AppData\Roaming\Dropbox. Você vê muitos .dbxarquivos em que o dropbox manterá essas informações (não apenas datas, mas também somas de verificação etc.). (Excluir os arquivos e dropbox será seriamente bagunça op você Dropbox diretório on-line e off-line;)
Rik
Não sei como você espera que o Dropbox acompanhe as alterações quando ele não estiver em execução. No cenário 2, você está adicionando arquivos ao Dropbox, o S3 está apagando arquivos do Dropbox. São dois cenários diferentes e devem se comportar de maneira diferente. Não sei de onde vem sua confusão. O Dropbox fará um melhor esforço com base no que está na nuvem e no seu disco rígido no momento em que você liga o Dropbox. A melhor maneira de usar o Dropbox é sempre mantê-lo. Se você precisar desligar os computadores, tenha cuidado com as exclusões. Pelo menos o DropBox oferece restaurações de 30 dias. Você acha que o Dropbox é ruim, tente o OneDrive.
Sun
"Não sei como você espera que o Dropbox acompanhe quando está desligado" <- sem dúvida você espera, se espera que o S3 aja de maneira diferente do S2. "Se você desligar os computadores, tenha cuidado com as exclusões" <- Como usuário da caixa de depósito, este é um aviso que eu gostaria de ver na documentação. É muito fácil você dizer "deve se comportar de maneira diferente", porque você não está declarando exatamente o que deve fazer. O que me incomoda é que não consegui encontrar documentação que realmente declara o que deveria fazer. Foi exatamente por isso que fiquei confuso: forçado a adivinhar quais eram as variáveis ​​e a errar!
Ein
Na verdade, é uma pergunta muito relevante e eu vim aqui pesquisando a questão. Meu laptop não está totalmente sincronizado com o Dropbox há pelo menos um ano porque fiquei sem espaço. Então, eu usei a sincronização seletiva. Agora, atualizei meu HD para um SSD maior e quero sincronizar tudo novamente. Faltam muitos arquivos em algumas pastas do meu laptop e eu tenho medo que o Dropbox interprete mal o que fazer quando sincronizar. Ele adicionará os arquivos da nuvem às pastas locais - ou excluirá os arquivos ausentes da nuvem? Eu não tenho muita certeza!
marlar 21/10
-2

Na FAQ do Dropbox :

Ao contrário do aplicativo de área de trabalho do Dropbox, que verifica constantemente seus arquivos em busca de alterações, o aplicativo móvel geralmente sincroniza somente sob demanda. Isso evita que o Dropbox consuma toda a largura de banda e espaço.

Como isso acontece?

Isso também é mencionado em seu site :

Antes de transferir um arquivo, comparamos o novo arquivo com a versão anterior e enviamos apenas a parte do arquivo que foi alterada. Isso é chamado de "diff binário" e funciona em qualquer tipo de arquivo. O Dropbox compacta arquivos (sem perda de dados ou qualidade) antes de transferi-los também. Dessa forma, você também nunca precisará se preocupar com o re-upload de um arquivo pelo Dropbox ou o desperdício de largura de banda.

Karan Raj Baruah
fonte
11
Estou fazendo uma pergunta mais básica, não relacionada à compactação / diferenças ... como saber quando o arquivo local deve se tornar a nova "versão mais atual" versus se o arquivo local está "desatualizado".
Ein
Não está relacionado a diferenças. A API do Dropbox sabe comparar essas diferenças quando um arquivo específico fica "desatualizado" e decide sincronizar o arquivo específico. Fora isso, não consegui encontrar mais informações. O próprio Dropbox sendo de código fechado não tornou mais públicas as informações.
Karan Raj Baruah
Eu editei a pergunta para reformular o que estou perguntando, porque provavelmente há alguma confusão acontecendo. Além disso, não consigo analisar sua segunda frase.
Ein