[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Outils de comparaison de fichier à deux panneaux



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           <basile@starynkevitch.net>
8 rue de la Faïencerie
92340 Bourg-la-Reine,          France
http://starynkevitch.net/Basile & https://github.com/bstarynk 
& https://github.com/RefPerSys/RefPerSys/ 


Reply to: