On Sun, 2025-02-23 at 14:36 +0100, Benoît Barbier wrote: > Bonjour, > > Je recherche un outil de comparaison de répertoires à deux panneaux qui > fonctionnerait comme un outil diff comme meld pour comparer deux > répertoires ou deux arborescences. > Avec la possibilité de pousser la différence à gauche ou à droite, qui > montre le plus récent. > Cf. > https://meldmerge.org/ > > Le problème qui se pose : dans le panneau de gauche j’ai un fichier sur > un disque dur externe, il n’est pas dans le répertoire du même nom dans > le panneau de droite, mais ne serait-il pas autre part dans > l’arborescence du disque dur ? > > Il faudrait un outil qui travail avec la base de donnée updatedb/locate > ou qui a une autre méthode pour me signaler que le fichier n’est pas > dans le panneau opposé mais autre part sur le disque.
Il me semble que GNU emacs a un mode qui convient. s'il s'agit de retrouver deux fichiers de nom distincts mais de contenus identiques, on pourrait s'inspirer de ccache https://ccache.dev/ comme de https://www.softwareheritage.org/ Ou envisager de construire une base de données (peut-être avec Redis ou sqlite) qui stocke des métadonnées dont une signature (md5sum ou sha512) du contenu de chaque fichier (préalablement balayé, par exemple toutes les heures, par un démon lancé par crontab). Le problème posé me parait toutefois insoluble en toute rigueur sur un Linux, car deux processus différents peuvent accéder à (voire modifier) un même fichier simultanément. Sans verrouillage explicite et volontaire par des appels systèmes tels que https://man7.org/linux/man-pages/man3/lockf.3.html ou https://man7.org/linux/man-pages/man2/flock.2.html ou https://man7.org/linux/man-pages/man3/flockfile.3.html ou https://man7.org/linux/man-pages/man2/mlock.2.html le comportement n'est pas prévisible ni même défini. C'est déjà compliqué sur un système de fichier local (voir https://man7.org/linux/man-pages/man7/inode.7.html comme ext4 ou xfs) et encore plus compliqué sur un système de fichier distant (NFS). D'ailleurs les SGBD comme les versionneurs existent aussi pour ça. Voyez aussi http://projects.camlcity.org/projects/omake.html qui pourrait avoir du code convenable (à compléter). En fait je crois que le problème est insoluble si on cherche une solution robuste et générale. Librement -- Basile STARYNKEVITCH <[email protected]> 8 rue de la Faïencerie 92340 Bourg-la-Reine, France http://starynkevitch.net/Basile & https://github.com/bstarynk & https://github.com/RefPerSys/RefPerSys/

