Une librairie pour la synchronisation ?

a marqué ce sujet comme résolu.

Bonjour,

J'ai voulu réaliser un programme à l'aide de QT pour synchroniser deux dossier ensemble. Mais je me suis vite rendu compte que je devais bien réinventer la roue, et même si j'étais pas loin du but, ça reste une solution pas totalement sur.

C'est pourquoi j'aimerais vous demandez si vous connaissez une librairie pour faire de la synchronisation (Pas forcément src <-> dest, s'il n'y a que src --> dest c'est aussi bon.

Si possible une librairie que je peux facilement ajouter à QT, ou alors en Java. (Je connais relativement bien le Java, mais je préférerais en C++ afin d'approfondir ce langage..)

En vous remerciant, WinXaito.

Ouais ça me paraît pas top top.
Mon idée serait de créer un programme me permettant de synchroniser mes dossiers sur mon NAS. (Et sur plusieurs PC, et installer Git en plus bof).

Pourquoi ne pas utiliser un logiciel de synchronisation standard ? Car je dois pouvoir avoir un certain contrôle sur le programme en lui même.

Tu veux vraiment synchroniser le dossier dès qu'il y a eu une modification ? parce qu'à part en parsant le dossier à un interval de temps donné, je sais pas comment tu récupères cette informations. Je suis loin de m'y connaitre mais tout les systèmes de sauvegarde/backup que je connais se font avec ce système d'interval de temps dans un deamon.

Il devrait y avoir moyen de faire marcher rsync avec le sous-système Ubuntu disponible sous windows 10. J'ai pas essayé mais c'est censé pouvoir servir à ça.

Mais sinon, si tu le fais toi-même, vraiment, utilise un service d'observation comme le WatchService de Java, et évite les systèmes en mode polling / parcours du dossier toutes les X secondes. Ce n'est pas performant et tu risques tôt ou tard d'avoirs des bugs de synchronisation inexpliquables si les fichiers sont mis à jour fréquemment.

Il pourrait être intéressant de le faire en Node.js, il intègre une API de watch très simple, et il y a de quoi faire du HTTP/FTP/SCP/SFTP/autre soit avec ce qui est fourni de base, soit avec des bibliothèques assez légères. Pour la partie envoi/upload, il y a CURL aussi.

+0 -0

Merci de vos réponses.
Je vais analyser tout ça.

Par contre je pense que je me suis très mal exprimé, car mon but n'est pas de synchroniser à chaque modification. Mais une fois par jour ou à chaque démarrage, voir moins ou au plus chaque heure. Est-ce que cela changerais quelques choses ?

Dans ce cas, FTP ou SCP sont encore plus adaptés. Ils sont fait pour ça : transférer des fichiers entre hosts. Je pense que FTP est plus accessible sous Windows, mais j'aurai une préférence pour SCP. WinSCP est un client qui supporte les deux protocoles. Tu peux aussi utiliser PuTTY pour SCP si tu veux scripter (même si, de mémoire, WinSCP à une interface en ligne de commande).

Oui. Mais mon problème n'est pas vraiment la.

Je peux accédé au serveur via un lecteur de disque (En utilisant Samba). Donc en gros une simple synchronisation entre deux dossiers fonctionnerais.

J'ai réussi à parcourir tous les dossiers et fichiers pour les comparés (taille et date de modification) dans la destination. J'ai ensuite réussi à supprimer les fichiers dans la destination qui ne sont pas présent dans la source.

Mais mon gros soucis est pour supprimé les dossiers non présent dans la source qui sont présent dans la destination. Car je ne peux pas supprimer un chemin (Uniquement un dossier en bout de chemin). Et le QDirIterator ne me parcours pas les dossiers dans l'ordre que j'aimerais pour pouvoir supprimer tous les dossiers correctement.

En vous remerciant.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte