Pergunta

Eu estive olhando para o DropBox cliente Mac e estou pesquisando atualmente implementação de uma interface similar para um serviço diferente.

Como exatamente eles interface com localizador como este? Eu duvido que esses objetos representados na pasta são documentos reais baixado em cada carga? Eles devem baixar dinamicamente como eles são necessários. Então, como você pode exibir esses itens no Finder sem ter objetos do sistema de arquivos real?

Alguém sabe como isso é feito no Mac OS X?

Ou qualquer ponteiro para a Apple API do ou outros projetos de código aberto que têm uma integração similar com localizador?

Foi útil?

Solução

Duas sugestões:

O ex-lhe permitirá escrever um aplicativo que aparece como um sistema de arquivos e faz todas as coisas certas; este último irá permitir que você se move server-side tudo e deixar o usuário simplesmente montar o seu serviço como um compartilhamento de arquivo.

Outras dicas

Dropbox não é alimentado por qualquer MacFUSE ou WebDAV, embora esses poderiam ser soluções perfeitamente bem para o que você está tentando realizar.

Se fosse alimentado por essas coisas, ele não iria funcionar quando você não estava conectado, como ambos os contar com o servidor para armazenar as informações reais e Dropbox não. Se eu sair Dropbox (feito através do item de menu) e desconectar da rede, eu ainda pode usar os arquivos. Isso porque os arquivos estão armazenados aqui no meu disco rígido.

Isso também significa que os arquivos não precisam ser "baixado em cada carga", uma vez que eles são realmente armazenados na minha máquina aqui. Em vez disso, apenas os deltas são enviados através do fio, bem como a aplicação Dropbox (execução em segundo plano) corrige os arquivos de forma adequada. Indo para o outro lado, os relógios de aplicação Dropbox para os arquivos na pasta Dropbox, e quando eles mudam, ele envia os deltas apropriadas para o servidor, o que lhes propaga a quaisquer outros clientes.

Esta configuração tem algumas vantagens decidiu: ele funciona quando estiver offline, é uma ordem de magnitude mais rápido, e é transparente para outros aplicativos, já que eles só ver os arquivos no disco. No entanto, eu não tenho nenhuma idéia de como ele lida com conflitos de mesclagem (que poderia facilmente surgir com um ou mais clientes off-line), que não são um problema se o servidor é o único copiar e cada edição mudanças que cópia central.

Onde Dropbox realmente brilha é que eles têm um truque adicional que emblemas os itens na pasta Dropbox com seu status de sincronização atual. Mas não é isso que você está perguntando sobre aqui.

Quanto à questão em mãos, você deve definitivamente olhar para MacFUSE e WebDAV, que pode ser a solução perfeita para o seu problema. Mas a forma como Dropbox de fazer as coisas, com uma aplicação de fundo mudando arquivos reais no disco, pode ser uma troca melhor.

Dropbox é provavelmente a utilizar FSEvents para assistir muda para o sistema de arquivos. É uma grande API e pode até mesmo agrupar-se mudanças que aconteceram enquanto seu aplicativo não foi executado. É a mesma API que usos Spotlight. O aplicativo menu provável é que o actual observando-se (desde reiniciá-lo pode corrigir uploads estar pendurado, por exemplo).

Não há nenhuma maneira que eles estão usando MacFUSE, como que exigiria a instalação da extensão do kernel MacFUSE para tornar o trabalho Dropbox, e desde que eu definitivamente não instalá-lo, eu duvido que eles estão usando-o.

Dropbox no cliente é escrito em python. O cliente parece usar um banco de dados sqlite3 para arquivos de índice. Suponho Dropobox dividir um arquivo em pedaços, para reduzir o uso de largura de banda. By the way, que duas pessoas tem o mesmo arquivo, mesmo se eles não conhecem uns aos outros, o servidor pode otimizar e evitar para transferir o arquivo mais vezes, apenas a copiá-lo no lado do servidor

Para mim parece que um sistema de controle de revisão fortemente modificada. Tem todas as características: atualiza arquivos baseado em deltas, opções para recuperar ou restaurar revisões antigas de arquivos. É quase como eles estão usando git ( gitfs ?), Ou algum sistema de ficheiros eles projetaram.

Você poderia também dar Arquivo Transportador uma tentativa. É um Python daemon capaz de detectar instantaneamente alterações FS (no Linux através inotify, no OS X através FSEvents), o processamento dos arquivos e sincronizando-os para um ou mais destinos.

Protocolos suportados: FTP, SFTP, Amazon S3 (CloudFront também é suportado), Rackspace Cloud File. Pode ser facilmente estendido. Usos django-storages.

"processamento de arquivos": por exemplo, otimização de imagens, vídeos transcodificação - este foi concebido originalmente para ser usado para o envio de ativos estáticos para um CDN no contexto de acelerar sites)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top