Une librairie pour la synchronisation ?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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.

+0 -0

Salut, tu ne peux pas faire un truc sale en utilisant git ? J'imagine un truc avec watchdog en python par exemple, et à chaque changement detecté tu envoies dans un depot distant qui est le dossier de destination.

+0 -0
Auteur du sujet

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.

+0 -0

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.

Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison - Coluche

+0 -0

Tu watches le dossier avec ton programme et tu transfères en FTP ce qui change ?

Sinon, SCP. Il permet d'utiliser les dates de modifs des fichiers pour transférer que les plus récents. Tu pourrais faire une boucle avec un petit sleep pour pas trop spammer.

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0

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.

Édité par QuentinC

Ma plateforme avec 23 jeux de société classiques en 6 langues et 13000 joueurs: http://qcsalon.net/ | Apprenez à faire des sites web accessibles http://www.openweb.eu.org/

+0 -0
Auteur du sujet

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 ?

+0 -0

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).

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0
Auteur du sujet

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.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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