Follow

Je cherche un logiciel qui permettrait de comparer et fusionner le contenu de dossiers, en affichant les documents modifiés/nouveaux entre chaque dossier, et surtout qui gérerait la suppression de fichiers ?

Je cherche à synchroniser des dossiers que je modifie indépendamment, avec un cas d'usage particulier à gérer: si je supprime des fichiers dans n'importe lequel des deux dossiers, qu'il ne le marque pas comme "nouveau" dans l'autre, mais "à supprimer".

Des suggestions ? 🙏
Merci 🙂

· · 11 · 10 · 1

Pour donner du contexte et préciser le besoin : je me balade avec une copie d'un dossier sur un PC, une sauvegarde sur un disque dur, et une autre sur un autre PC.
Je veux pouvoir modifier n'importe lequel de ces dossiers, puis synchroniser avec les autres.
Pour les nouveaux fichiers et les modifiés, facile (je fais avec ).

Mais pour les supprimés
 sont-ils supprimés, ont-ils été rajoutés de l'autre cÎté ?
Cela oblige Ă  regarder Ă  la main.

Une synchro en ligne (Nextcloud
) est exclue.

Bonus: si ça existe avec une interface, c'est largement mieux.

Rsync permet-il de faire cela ?
Grsync aussi ?

Ah et : les outils fonctionnant à partir d'une base de données qu'il faudrait synchroniser entre plusieurs appareil, je préfÚre éviter :/

Je reprécise: ça s'appliquerait à des fichiers, pas à leur contenu (et en plus, c'est pour partie du binaire, donc pas de comparaison de fichiers textes), et le besoin central c'est que logiciel soit capable de gérer la différence entre suppression et nouvel ajout de fichier.

S'il n'y a pas ce critÚre, ça ne m'intéresse pas.

Pour expliciter le cas d'usage:
- j'ai un dossier A1.
- je pars en déplacement avec une copie A2 de ce dossier. J'y ajoute et supprime des fichiers.
- je reviens. Si je comparais directement A1 et A2, tous les fichiers présent que dans A2 sont nouveaux (je les mets dans A1), tous les fichiers absents de A2 sont supprimés (à supprimer de A1). Facile.
Mais si entre temps j'ai modifié A1, en supprimant un fichier par exemple, il ne faut pas le copier de A2 (il n'est pas nouveau), mais le supprimer.

Suite à vos retours, revient beaucoup

Il a le bon goût d'avoir une interface graphique par défaut (unison-gtk) et au moins une dérivée (un peu plus léchée) : github.com/vfaronov/gunison

Et je vois qu'il est effectivement capable de faire ce que je lui demande

Mais que dans un cas particulier, non ?

Si je comprends bien, il lui faut avoir scanné les dossiers au moins une fois avant pour qu'il puisse déterminer si un fichier est nouveau d'un cÎté, ou supprimé de l'autre.

Donc une base de donnée (ou similaire) en interne, qui doit préexister avant.

---
Ça se synchronise entre appareils ? Dossier par dossier ?
---

Bon ce n'est pas le top (mamot.fr/@Lapineige/1087479900) car contraignant, mais au moins ça existe. Merci des retours 🙂
@ScriptFanix @vincib @lebout2canap @edasfr @Seb35 @francks @dr4Ke

Question complémentaire par rapport à : si je comprends bien il fonctionne sous un principe de "Profils", un profil définissant deux dossiers à comparer.

Est-ce qu'il y a un moyen plus simple et fluide de changer de dossier Ă  comparer (pour comparer toute une liste de dossiers 2 Ă  2 par exemple) sans refaire toute la manipulation Ă  la main ?
C'est extrĂȘmement fastidieux đŸ˜©

@Lapineige
Heu, si j'ai bien compris le besoin, oui, rsync fait ça.
Ave quels paramÚtres en revanche ? Trop longtemps que j'ai pas utilisé pour te dire.

@Lapineige
Unison, déjà suggéré, fais ça super bien

@Lapineige Tu peux faire une synchro par ssh il me semble, à vérifier : je ne l'ai pas utilisé depuis longtemps (je synchronise ce que je veux synchroniser via Nextcloud maintenant)@vincib @lebout2canap @edasfr @Seb35 @francks @dr4Ke

@ScriptFanix c'est un fichier synchronisable via un Nextcloud justement ?

Ça me convient peu (c'est contraignant) mais Ă  dĂ©faut ça peut ĂȘtre une bonne solution pour gagner du temps.
@vincib @lebout2canap @edasfr @Seb35 @francks @dr4Ke

Question complĂ©mentaire : pour qu'il compare les dossiers Ă  sa rĂ©fĂ©rence, il faut absolument qu'ils aient le mĂȘme nom et le mĂȘme chemin d'accĂšs ?

Ou il y a une bidouille de réalisable pour qu'il gÚre un changement de l'un ou l'autre ?

@ScriptFanix
Tiens puisque LapinNeige a apparemment trouvé sa réponse je détourne le thread : je chercherais un logiciel pour dédupliquer mes fichiers.
En gros j'ai un fouillis innommable de trucs divers et variĂ©s copiĂ©s dans plein de disques diffĂ©rents, parfois dans des rĂ©pertoires de mĂȘme nom, parfois dans des rĂ©pertoires diffĂ©rents, et je voudrais ne garder qu'une seule version.

Y'aurait quoi pour ça ?

@vincib @lebout2canap @edasfr @Seb35 @francks @dr4Ke

@lienrag J'utilise rdfind. Il peut supprimer les doublons, ou les remplacer par des hardlinks, ou ...
@vincib @lebout2canap @edasfr @Seb35 @francks @dr4Ke

@Lapineige Je peux donner un coup de main pour Unison, mais il faudrait que je comprenne ce que tu veux faire exactement.

Le principe est le suivant: pour chaque paire de racines, une archive garde trace d’un checksum de chaque fichier, comme cela on peut dĂ©tecter la modification / suppression / crĂ©ation. Par dĂ©faut c’est dans ~/.unison

On crĂ©e des profiles qui indiquent la racine et la liste des chemins Ă  synchroniser, ainsi que d’autres options (comme les fichiers Ă  ignorer)

@brab Merci des explications.

En gros, j'ai des centaines de dossiers (la liste grossi réguliÚrement) à comparer, avec une ou deux copies. Et parfois avec une copie supplémentaire qui change d'emplacement, mais c'est anecdotique.

Comparer la totalitĂ© des dossiers d'un coup (en les regroupant dans un dossier racine) ne semble pas ĂȘtre une option gĂ©rable (beaucoup trop de fichiers).

Du coup, il me faut créer les profils pour chaque paire/triplet de dossiers


@Lapineige Pourquoi comparer tous les dossiers n’est pas gĂ©rable ? Je synchronise mon homedir avec unison


@brab la totalité des dossiers d'un coup, ça fait des milliers de fichiers à synchroniser, c'est difficile de m'assurer qu'il n'y a pas d'erreur.

@Lapineige une information importante est la suivante : est-ce que les dossiers sont au mĂȘme endroit sur les deux machines (par rapport Ă  une racine qui peut ĂȘtre diffĂ©rente) ? Si oui, il y a une solution incrĂ©mentale simple. Si non, il faut passer par des liens symboliques

@brab non, et la comparaison la plus fréquente se fait avec une machine et 1 ou 2 disques externes (et pareil de l'autre cÎté, mais plus rare).

@Lapineige si les dossiers n’ont pas la mĂȘme arborescence, le plus simple est de passer par des liens symboliques (en plus cela sera facilement incrĂ©mental)

- créer un répertoire to_sync sur la machine (dans /users/foo par exemple) et sur le disque (dans /mnt/ext par exemple)

- mettre dans le fichier prf

root = /users/foo/
root = /mnt/ext/

path = to_sync

follow = Path to_sync

- pour chaque dossier Ă  synchroniser, crĂ©er dans to_sync un lien symbolique vers le dossier *avec le mĂȘme nom*

@Lapineige Si l’historique est linĂ©aire en temps entre les 2 dossiers (A1 dossier courant, puis synchro A1 → A2, puis dĂ©placement A2 dossier courant, puis retour synchro A2 → A1) c’est facile Ă  gĂ©rer avec des `rsync --delete A2 A1` lors du retour (et `rsync --delete A1 A2` lors du dĂ©part). Ça oblige toutefois Ă  une certaine rigueur pour ne pas modifier A1 pendant le dĂ©placement (=aprĂšs le rsync vers A2). On peut imaginer mettre un fichier d’état pour dĂ©clarer qui est actif entre A1 et A2.

@Seb35 ça serait trop facile 😅

Justement le cas d'usage c'est que A1 et A2 sont modifiés tous les deux.

@Lapineige
J'utilise GRsync ! Par contre, pas sûr que ça soit sans erreurs avec 2 ordinateurs.

@svajef et est-ce que ça gÚre le besoin spécifique que j'ai évoqué ?

@Lapineige rsync on peut le configurer pour qu'il fasse des dossiers de backup de ce qui a Ă©tĂ© supprimĂ©. Genre backup_20220801 dans lequel tu trouveras les fichiers supprimĂ©s lors de la synchro du 1er aoĂ»t. Je ne sais pas si on peut faire la mĂȘme chose pour les modifications...
Sinon syncthing est intéressant aussi.

@Lapineige un she'll script qui fait un diff entre deux ls ?

@francks @usul @Lapineige Je plussoie sur Unison pour la rĂ©conciliation occasionnelle de dossiers presque similaires (sauvegardes qui divergent), mais si le scĂ©nario est rĂ©gulier et connu d’avance avec seulement des ajouts/suppressions j’opterais plus pour un script Ă  base de `diff -qr` man7.org/linux/man-pages/man1/

@usul c'est plus compliqué que cela à implémenter, et je cherche surtout une interface graphique.
(et Ă  ne pas tout coder moi-mĂȘme)

@Lapineige C'est exactement le cas d'utilisation pour lequel git-annex (https://git-annex.branchable.com/) a été créé: plusieurs endroits de stockage, chacun avec ses propres rÚgles (une clé usb qui ne fait que transfert, un gros disque dur qui fait backup, un téléphone qui a une bande passante payante et lente, ...) et qui permet de gérer l'intégralité de ses documents.

C'est pas forcément simple d'appréhension, mais ca m'a l'air d'etre la solution la plus adaptée.

@Lapineige C'est plutÎt un bon cas d'usage pour git je trouve (sauf si c'est des grosses volumétries de fichiers binaires).

@octopoulpe @Lapineige

Oui, spontanément aussi j'aurais dit `git`. Mais ce n'est pas forcément facile d'accÚs pour quelqu'un qui n'a pas l'habitude des systÚmes de contrÎle de version (que ce soit git, cvs, svn,...).

@octopoulpe @Lapineige

À noter que contrairement aux autres que j'ai citĂ©, git est tout Ă  fait adaptĂ© Ă  la situation prĂ©sente: absence de serveur central.
On peut ajouter des «remotes» locaux (et donc jouer entre des clones sur les PCs et sur le disque USB)

@octopoulpe Et mon instinct me dit que @Lapineige veut faire ça pour un dossier photos. :p

@Lapineige Kdiff3, qui tourne sous win (et existe en portable) et lin

@gherhartd Kdiff est capable de déterminer si un fichier a été supprimé ou simplement créé (sans qu'il existe dans l'autre dossier) ?

@Lapineige oui, totalement, voir la doc ici : kdiff3.sourceforge.net/doc/dir (ou alors j'ai pas compris la question, mais la page liée ici devrait lever l'éventuel malentendu)

@gherhartd ok, je vais creuser ça, le code couleur est intĂ©ressant pour faciliter la comparaison (mais qu'Ă  3 dossiers, mon cas d'usage c'est surtout 2 Ă  2), mais je ne vois pas Ă  quel endroit ça parle d'une fonctionnalitĂ© pour mon cas d'usage đŸ€”

@gherhartd aprĂšs essai, si je crĂ©Ă© un fichier dans chaque dossier, puis que j'en supprime un des deux, j'ai le mĂȘme affichage : un fichier "nouveau", un fichier "non existant".

Y a-t-il une astuce ?

@Lapineige ah, je viens seulement de comprendre la question... je ne connais pas de logiciel qui fasse cela facilement. Il faudrait se baser sur la date (dangereux), ou avoir un état antécédent du dossier que le logiciel irait lire (ou un backup qui servirait de, ou enregistrer et consulter d'une maniÚre ou d'une autre les opérations sur les fichiers...)

@gherhartd
> Il faudrait se baser sur la date (dangereux)

En fait ça m'irait assez bien 😅
Déjà automatiquement détecter les fichiers qui sont clairement nouveaux car existants depuis *aprÚs* la date de derniÚre modification du dossier, ça serait en grand gain.

@Lapineige @gherhartd

Unison comme d'autres l'ont déjà suggéré.

Et si ce sont vraiment des rĂ©pertoire sur des ordis diffĂ©rents, syncthing fait trĂšs bien la synchronisation automatique dans tous les sens. Il a une interface web intĂ©grĂ©e. Il fait tout automatiquement et gĂšre les conflits (modifications des deux cĂŽtĂ©s en mĂȘme temps) en faisant des doublons (Ă  supprimer manuellement). Je l'utilise depuis des annĂ©es, c'est vraiment une perle ce logiciel libre.

@dr4Ke Syncthing n'existe qu'en version web (serveur) ?
Et il faut que les deux ordinateurs soient allumés et connectés au réseau (local) du coup ?

Si oui, c'est pas mon cas d'usage, qui est plutĂŽt un transfert via un disque dur externe, plutĂŽt par USB mais en tout cas pas par Internet.

@gherhartd

@Lapineige @gherhartd

C'est un service qui tourne sur chaque machine, et qui est configurable par une interface web. Un peu comme un dropbox mais sans serveur intermédiaire. Mais oui, en effet, il faut que les 2 machines puissent communiquer donc c'est pas forcément ton cas d'usage.

Perso, j'ai un NAS qui est toujours branché et qui me sert de "serveur" central syncthing. Comme ça, quelque soit la machine allumée, elle a une référence de synchronisation.

@dr4Ke ok, donc clairement pas pour moi, mais je note l'idée qui est trÚs intéressante dans le cas d'un NAS !

@Lapineige @gherhartd

AMA unison est celui qui correspond le mieux à ton cas d'usage. Il y a longtemps que je ne l'ai pas utilisé mais il se souvient de l'état des répertoires sur la machine sur laquelle tu l'exécutes. Pour un fichier supprimé localement dans A et qui existe toujours dans B (car déjà présent lors d'une précédente synchro), il te proposera de le supprimer.

Par contre, la base de donnĂ©es est bien locale au PC qui exĂ©cute. Et les chemins doivent rester les mĂȘmes, je pense.

@Lapineige

+1 pour syncthing. Pas de serveur central, mais une instance qui tourne sur chaque PC Ă  synchroniser.

Si tu n'as que deux PC Ă  synchroniser, oui, il faut que les deux soient allumĂ©s en mĂȘme temps. L'intĂ©rĂȘt est que la synchro se fera mĂȘme Ă  distance.

@Lapineige Ça m'Ă©voque Unison cis.upenn.edu/~bcpierce/unison que je n'ai plus utilisĂ© depuis trĂšs longtemps. Je ne sais plus si une interface graphique est inclue ou s'il faut en ajouter une soi-mĂȘme.

Sign in to participate in the conversation
La Quadrature du Net - Mastodon - Media Fédéré

Mamot.fr est un serveur Mastodon francophone, géré par La Quadrature du Net.