
1. Présentation générale
SyncVision Pro est un utilitaire de synchronisation de fichiers unidirectionnel doté d’une interface graphique (GUI) développée avec Python et Tkinter. Il permet de copier le contenu d’un dossier source vers un dossier de destination en s’assurant que seuls les fichiers nouveaux ou modifiés sont transférés, optimisant ainsi le temps de traitement.
2. Fonctionnalités clés
- Synchronisation Intelligente : Compare les fichiers par taille et par empreinte numérique (SHA-256) pour garantir l’intégrité des données.
- Statistiques en Temps Réel : Affichage dynamique du nombre total de fichiers, des fichiers copiés et des fichiers ignorés.
- Console Intégrée : Journalisation (log) détaillée des opérations en cours.
- Multi-threading : L’interface reste fluide pendant le processus de synchronisation grâce à l’exécution en arrière-plan.
- Persistance des Paramètres : Sauvegarde automatique des derniers chemins utilisés et de la taille de la fenêtre dans un fichier
config.json.
3. Prérequis
- Python 3.x installé.
- Bibliothèques standards incluses (aucune installation
pipexterne n’est requise) :os,shutil,hashlib,json,tkinter,threading.
4. Structure du Code
Logique de calcul (file_hash)
La fonction file_hash(path, algo="sha256") lit les fichiers par blocs de 8192 octets pour générer une empreinte unique. Cela permet de détecter une modification de contenu même si le nom du fichier reste identique.
Interface Graphique (SyncApp)
setup_ui: Définit la mise en page (champs de saisie, barres de progression, zone de texte).load_config/on_close: Gère la lecture et l’écriture de la configuration utilisateur.start_sync_thread: Initialise les compteurs et lance le thread de travail pour ne pas figer l’application.
Processus de Synchronisation (run_sync)
Le script suit un flux de travail en deux étapes :
- Inventaire : Scan récursif du dossier source pour lister tous les fichiers (ignore les fichiers/dossiers cachés commençant par un point).
- Traitement : Pour chaque fichier, il vérifie si une copie est nécessaire selon trois critères :
- Le fichier n’existe pas dans la destination.
- La taille du fichier est différente.
- Le hash SHA-256 est différent.
5. Utilisation
- Lancez le script via la commande :
python app.py. - Source : Cliquez sur « Parcourir » pour sélectionner le dossier contenant vos fichiers originaux.
- Destination : Sélectionnez le dossier où les fichiers doivent être sauvegardés.
- Lancer : Cliquez sur le bouton vert « Lancer la synchronisation ».
- Suivi : Observez la barre de progression et la console pour voir quels fichiers sont en cours de traitement.
6. Détails Techniques
- Algorithme de comparaison : SHA-256.
- Gestion des dossiers : Le script recrée automatiquement l’arborescence des sous-dossiers dans la destination si elle n’existe pas.
- Sécurité : Utilise
shutil.copy2pour préserver au maximum les métadonnées des fichiers (dates de création/modification).
7. Limitations connues
- Synchronisation unidirectionnelle : Le script ne supprime pas les fichiers dans la destination s’ils ont été supprimés de la source.
- Fichiers système : Les fichiers cachés (commençant par
.) sont ignorés par défaut.
Développé avec Python & Tkinter.
0 commentaire