Bonjour
Je cherche à déterminer, dans un programme en C++, à quel système de fichiers un fichier appartient.
Jusqu'à présent j'utilisais la commande fstat(), récupérais le champ dev_t pour en déduire les versions MAJ et MIN du périphérique. Et je retrouvais le point de montage, l'UUID du système de fichiers ou de la partition à partir du fichier /proc/self/mountinfo.
Cette méthode fonctionne bien sur des partitions EXT4 ou NTFS mais ne marche plus si le fichier se trouve dans un système BTRFS.
La seule alternative que je vois est de parcourir tous les points de montage du système, en particulier les sous-volumes BTRFS, pour déduire lequel serait le plus proche du chemin de mon fichier.
Et je ne sais pas si cette méthode est fiable, notamment en cas de liens symboliques.
Mon besoin réel est d'identifier sur quel disque physique le fichier se trouve réellement, afin de m'assurer que j'ai des copies répliquées sur des disques différents.
BTRFS me pose du coup d'autres problèmes puisque le système de fichiers peut être étalé sur plusieurs disques et que plusieurs copies d'un même fichier peuvent éventuellement pointer vers le même fichier physique.
Mais, à la rigueur, si le cas se produisait, je pourrais considérer tous les disques couverts par le filesystem BTRFS comme un seul périphérique, au moins du point de vue de la réplication.
Partager