La mise en œuvre d'un système de fichiers virtuel est très OS spécifique. La raison en est que l'architecture des pilotes est différente dans les OS Unix et Windows. Pour éviter d'écrire votre propre pilote, vous pouvez utiliser la boîte à outils du système de fichiers en mode utilisateur. Sur Linux, BSD et MacOS, il existe respectivement FUSE et OSXFUSE (fork de MacFUSE désormais inactif). Sur Windows, notre Callback File System est utilisé.
Dropbox pour le moment n'a pas de système de fichiers virtuel, mais seulement une extension shell (ils ont prévu de créer un disque virtuel, mais je ne sais pas ce qu'ils ont décidé).
En ce qui concerne le suivi des modifications de fichiers: il existe plusieurs méthodes. Le plus simple est de scanner le répertoire sur la minuterie et de comparer les horodatages et les tailles de fichiers. Ensuite, on peut utiliser la fonction WinAPI FindFirstChangeNotification. Et la méthode la plus sophistiquée et la plus fiable consiste à utiliser un pilote de filtre de système de fichiers. Sur Windows, notre CallbackFilter peut être utilisé. Sur MacOS X et Linux, vous pouvez obtenir des post-notifications similaires à celles proposées par FileSystemWatcher dans .NET/Windows. En particulier, sur Linux, on peut utiliser inotify.
Le client dropbox ne met pas en fait un système de fichiers, il inspecte simplement les mises à jour et les fichiers existants. FUSE fait quelque chose de très différent. –
Généralement, la réutilisation de code maximum est mieux réalisée grâce à une architecture bien pensée et la généralisation du problème. Et, bien sûr, la sélection d'un langage/cadre de programmation en cas de développement multi-plateforme. –
Dans la boîte de dépôt ... En général, comment détectent-ils qu'un fichier a été modifié? Je ne veux vraiment pas entrer dans les détails de leur technologie, mais je suis curieux de savoir s'ils font simplement quelque chose de naïf, comme scanner des fichiers pour l'horodatage modifié ou quelque chose de plus sophistiqué tel que la mise en place d'une notification. modifié. Ce dernier cas serait plus intéressant et j'aimerais savoir si c'est même possible sur une plateforme donnée. – mcot