2 votes

Fusion dynamique du contenu des dossiers NTFS dans un dossier virtuel

J'ai besoin de fusionner le contenu de plusieurs dossiers NTFS en un seul en fonction de certaines règles. Ces règles garantiront qu'il n'y a pas de conflits de noms. L'objectif est de faire tout cela par programme (c# et/ou c++).

La solution la plus simple que j'ai trouvée est de créer un lien NTFS (ou une jonction) dans le dossier cible pointant vers chaque fichier du dossier source.

Cela fonctionne jusqu'à présent, mais le problème que je rencontre est que les fichiers supplémentaires n'apparaissent pas et que les fichiers supprimés ne disparaissent pas.

Bien sûr, je peux lancer un processus d'arrière-plan (service) qui écoute les dossiers sources du système de fichiers et effectue les modifications appropriées des liens NTFS à la volée, mais est-ce la meilleure façon de procéder ?

La première question est la suivante 1. Quelle est la manière la plus élégante de procéder ? 2. J'ai vu de nombreux programmes qui, par exemple, peuvent monter le contenu d'un fichier ZIP ou ISO dans un dossier NTFS. Comment fonctionnent-ils ?

3voto

NPE Points 169956

Voici un projet qui vous permet de créer un système de fichiers usermode dans Window : Dokan :

Lorsque vous souhaitez créer un nouveau système de fichiers sous Windows, par exemple pour améliorer FAT ou NTFS, vous devez développer un pilote de système de fichiers. Le développement d'un pilote de périphérique fonctionnant en mode noyau sous Windows est extrêmement difficile. En utilisant la bibliothèque Dokan systèmes de fichiers très facilement sans écrire de pilote de périphérique.

2voto

Il y a deux façons de faire correspondre un élément à un dossier existant :

  1. Le pilote de filtre du système de fichiers filtre les demandes de FS vers le dossier existant et affiche le contenu modifié du dossier.
  2. Le pilote de système de fichiers crée un système de fichiers virtuel et le monte en tant que point de jonction sur le lecteur NTFS.

Les deux méthodes nécessitent un pilote correspondant en mode noyau.

Les applications qui exposent un fichier ZIP (ou un autre fichier similaire) utilisent l'une des méthodes ci-dessus. Les fichiers ISO, qui sont des images du disque, peuvent être exposés directement en tant que disques virtuels et également montés dans un dossier NTFS. Dans ce dernier cas, un pilote de disque en mode noyau est nécessaire.

Votre tâche particulière peut être accomplie grâce à notre Système de fichiers de rappel (CBFS). CBFS offre un pilote pré-créé en mode noyau et vous permet d'écrire votre code relatif au système de fichiers en mode utilisateur. CBFS inclut un exemple de Mapper qui fait presque ce que vous cherchez - il montre le contenu d'un dossier existant comme un nouveau système de fichiers virtuel, que vous pouvez monter sur un dossier NTFS (CBFS supporte cela). Des licences non commerciales sont disponibles pour les projets publics non commerciaux. Des API sont proposées pour .NET, C++, Java et Delphi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X