Question

J'ai consulté le client Mac de DropBox et j'effectue actuellement des recherches. implémenter une interface similaire pour un service différent.

Comment interagissent-ils exactement avec finder comme ceci? Je doute fortement que ces objets représentés dans le dossier soient des documents téléchargés à chaque chargement? Ils doivent télécharger dynamiquement selon leurs besoins. Alors, comment afficher ces éléments dans le Finder sans avoir d’objets réels dans le système de fichiers?

Quelqu'un sait-il comment cela est réalisé sous Mac OS X?

Ou tout pointeur sur les API Apple ou d'autres projets open source ayant une intégration similaire à finder?

Était-ce utile?

La solution

Deux suggestions:

Le premier vous permettra d’écrire une application qui apparaît comme un système de fichiers et fait tout ce qui est juste; ce dernier vous permettra de tout déplacer côté serveur et de laisser l'utilisateur monter votre service en tant que partage de fichiers.

Autres conseils

Dropbox n’est alimenté ni par MacFUSE ni par WebDAV, bien que ce soient des solutions parfaitement adaptées à ce que vous essayez d’accomplir.

S'il était alimenté par ces éléments, cela ne fonctionnerait pas si vous n'étiez pas connecté, car tous deux dépendent du serveur pour stocker les informations réelles, contrairement à Dropbox. Si je quitte Dropbox (via le point de menu) et que je me déconnecte du réseau, je peux toujours utiliser les fichiers. En effet, les fichiers sont stockés ici sur mon disque dur.

Cela signifie également que les fichiers n'ont pas besoin d'être " téléchargés à chaque chargement, " car ils sont réellement stockés sur ma machine ici. Au lieu de cela, seuls les deltas sont envoyés sur le réseau et l'application Dropbox (qui s'exécute en arrière-plan) corrige les fichiers de manière appropriée. Dans l’inverse, l’application Dropbox surveille les fichiers du dossier Dropbox et, lorsqu’ils changent, elle envoie les deltas appropriés au serveur, qui les transmet ensuite à d’autres clients.

Cette configuration présente certains avantages: elle fonctionne hors ligne, elle est beaucoup plus rapide et transparente pour les autres applications, car elles ne voient que des fichiers sur le disque. Cependant, je n'ai aucune idée de la façon dont il gère les conflits de fusion (qui pourraient facilement survenir avec un ou plusieurs clients hors ligne), qui ne posent pas problème si le serveur est la seule copie et que chaque modification modifie cette copie centrale.

Ce qui distingue vraiment Dropbox, c’est qu’il dispose d’une astuce supplémentaire qui attribue aux éléments du dossier Dropbox leur statut de synchronisation actuel. Mais ce n'est pas ce que vous demandez ici.

En ce qui concerne la question à l’examen, vous devez absolument vous pencher sur MacFUSE et WebDAV, qui pourraient constituer des solutions parfaites à votre problème. Mais la façon de faire de Dropbox, avec une application en arrière-plan modifiant les fichiers réels sur le disque, pourrait être un meilleur compromis.

Dropbox utilisera probablement FSEvents à surveiller. modifications apportées au système de fichiers. C'est une excellente API qui peut même intégrer les modifications apportées pendant que votre application n'était pas en cours d'exécution. C'est la même API que Spotlight utilise. L’application de la barre de menus effectue probablement l’observation elle-même (par exemple, son redémarrage peut permettre de réparer les téléchargements bloqués.)

Ils n'utilisent pas MacFUSE, car cela nécessiterait l'installation de l'extension du noyau MacFUSE pour que Dropbox fonctionne, et comme je ne l'ai certainement pas installée, je doute fort qu'ils l'utilisent.

Dropbox sur le client est écrit en python. Le client semble utiliser une base de données sqlite3 pour indexer les fichiers. Je suppose que Dropobox a divisé un fichier en morceaux afin de réduire l'utilisation de la bande passante. A propos, deux personnes ont le même fichier, même si elles ne se connaissent pas, le serveur peut optimiser et éviter de transférer le fichier plusieurs fois, en le copiant uniquement côté serveur.

Pour moi, cela ressemble à un système de contrôle de révision fortement modifié. Il possède toutes les fonctionnalités: met à jour les fichiers en fonction des deltas, options pour récupérer ou restaurer les anciennes versions des fichiers. On a presque l'impression qu'ils utilisent git ( GitFS ?), Ou un système de fichiers ils ont conçu.

Vous pouvez également essayer le convoyeur de fichiers . C'est un démon Python capable de détecter instantanément les modifications de FS (sous Linux via inotify , sous OS X via FSEvents ), en traitant les fichiers et en les synchronisant. vers une ou plusieurs destinations.

Protocoles pris en charge: FTP, SFTP, Amazon S3 (CloudFront est également pris en charge), fichiers Rackspace Cloud. Peut facilement être étendu. Utilise django-storages .

"Traitement de fichiers": par exemple optimisation des images, transcodage de vidéos & # 8212; & nbsp; cela a été conçu à l'origine pour être utilisé pour envoyer des ressources statiques à un CDN dans le cadre de l'accélération du développement de sites Web)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top