begin process at 2012 05 24 05:22:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier & Disque

 > SYNCHRONISATION DE RÉPERTOIRES

SYNCHRONISATION DE RÉPERTOIRES


 Information sur la source

Note :
Aucune note
Catégorie :Fichier & Disque Classé sous :synchronisation, sauvegarde, archive Niveau :Débutant Date de création :16/04/2009 Date de mise à jour :20/04/2009 12:29:47 Vu / téléchargé :4 332 / 147

Auteur : wkenw

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Pour résumer rapidement, ce petit programme en python synchronise des dossiers de sauvegarde et des dossiers auxquels vous tenez.
Pour l'instant il ne s'utilise qu'en ligne de commandes, mais je persiste à penser qu'il est tout de même assez facile d'emploi.

Voilà un cas simple typique d'utilisation :
-----------------------------------------
Vous avez un dossier où vous mettez toutes vos sources perso et ça vous briserait le c½ur de les perdre. Le code
python sync.py -f C:/Programmation -d ["G:/backup"] -r -n 10
créera G:/backup/Programmation et y copiera tous les fichiers, sous-dossiers etc (-r pour récursif) de C:/Programmation. Si vous modifiez un de vos fichiers et resynchronisez les deux dossiers, le fichier correspondant sur G:/ ne sera pas perdu, il sera renommé afin de laisser la place à la nouvelle version. Ici "-n 10" indique que chaque fichier a le droit à 10 versions sauvegardées.
Et si vous avez deux disques durs :
python sync.py -f C:/Programmation -d ["G:/backup", "H:/bAcKuP"] -r -n 10
Bref, je pense que ce petit exemple est assez clair. Pour avoir toutes les options possibles, tapez : python sync.py -h

Un cas un peu plus automatique :
------------------------------
je me sers de ce programme pour mes sources, mes photos etc. Je souhaitais donc automatiser son usage ! :)
C'est chose faite avec auto_sync.py et ASync.bat.
ASync.bat se lance au branchement du disque dur, lance auto_sync.py qui lit le fichier SYNC.conf, crée SYNC_ready.conf et lance : python sync.py SYNC_ready.conf.
Chaque ligne de SYNC_ready.conf contient les arguments que vous mettriez en ligne de commande. La seule différence avec SYNC.conf est que dans SYNC.conf, vous pouvez (euh, devez en fait) mettre %s au lieu du dossier courant, étant donné que vous ne savez pas encore quelle lettre sera donnée au disque externe.

------------------------------
Je joins un exemple de fichier SYNC.conf pour que ce soit plus clair. ASync.bat doit aussi être adapté à vos besoins.

Source

  • <ASync.bat, sur mon disque dur externe :>
  • cd backup
  • python auto_sync.py
  • PAUSE
<ASync.bat, sur mon disque dur externe :>

cd backup
python auto_sync.py
PAUSE

 Conclusion

J'utilise ce programme et n'ai détecté aucun bogue. Cela dit, il n'en est sans doute pas exempt et vos remarques seront les bienvenues.
Il met 1 min pour vérifier 30 Go de données (en supposant qu'il n'y a rien à changer).

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

20 avril 2009 12:29:48 :
J'avais fait une modif sans la tester (toujours une très mauvaise idée). Voilà, ça marche

 Sources de la même categorie

ENLEVER LES ACCENTS DE TOUS LES FICHIERS par Averell
Source avec une capture TRIER SES FILMS PAR GENRE - INTERFACE ZENITY OU LIGNE DE COM... par sarathai
LE GLOUTON ! [MANGE ET RECRACHE LES FICHIERS QU IL TROUVE D... par saigneurdushi
PYSCANLOG SCANNER DE FICHIER LOG par Guillamue06
Source avec Zip RÉPLICATOR par dhuyp

 Sources en rapport avec celle ci

Source avec une capture PHOTO SATELLITE AVEC ARCHIVAGE par saigneurdushi
EXTRAIRE LE CONTENU D'UNE ARCHIVE .TAR OU .RAR par brennal
Source avec Zip DVD_GRAVURE_DOSSIERS par lespinx

Commentaires et avis

Commentaire de wkenw le 22/04/2009 02:15:37

28 téléchargements et aucun commentaire, aucune critique ?

Commentaire de baouh le 06/05/2009 14:32:19

Bonjour,
Je débute tout juste dans Python, et je n'arrive pas à exécuter ton script... Je voulais le lancer sans utiliser les fichiers .conf car je les crois inadaptés dans mon cas. Je souhaite en effet réaliser une synchronisation entre 2 postes dont un en Linux et l'autre en Win XP (et je pensais plutôt utiliser rsync pour le côté Linux...)
Est-ce que ta solution pourrait fonctionner ? si oui, comment je lance ton script, à partir du shell python ?

Merci et désolé pour ces questions au ras des pâquerettes...

Commentaire de wkenw le 06/05/2009 20:04:08

Salut,

pour exécuter le script à partir du shell, je te propose la méthode la méthode suivante :
- tu ouvres le fichier sync.py, tu l'exécutes (F5).
- dans la console tu as l'aide du programme (suivi d'un message d'erreur que je n'avais pas prévu ^^) parce qu'aucun argument n'a été précisé.
- dans la console, tu exécutes la commande :
   main('-f C:/test -d ["E:/"] -r'.split(' '))     (à adapter)
   Le split() est nécessaire car le prgm est prévu pour être appelé en ligne de commande windows ou linux, du genre : python sync.py argument1 argument2 etc.
   (La fonction main -de sync.py- est chargée dans l'environnement du shell lorsque tu exécutes le script)

Est-ce adapté à ton projet ?
Je dirais que ça dépend de ce que tu veux faire et peux faire :
- en fait il ne s'agit pas exactement d'une synchronisation. Il y a un dossier "maître", celui que tu utilises couramment, et un dossier "esclave", qui conserve les fichiers qui sont passés par le dossier maître. C'est pour cette raison qu'un fichier supprimé dans le dossier maître ne le sera pas dans le dossier esclave. L'esclave est donc tjrs plus gros que le maître.
- je ne sais pas dans quelle mesure tu peux appliquer le prgm à ton cas. Je l'avais plutôt prévu pour un ordi ayant 2 disques durs ou plus. Cela fonctionnera si par un moyen qq tu arrives à partager le dossier à copier avec l'ordinateur de destination. Si tu y arrives, dis-moi comment ! :)

ça répond ?
A bientôt

Commentaire de baouh le 16/05/2009 19:48:45

salut wkenw,

Merci pour ta réponse rapide et désolé de revenir seulement maintenant. J'avais besoin d'un moyen de synchroniser des documents pdf en particulier (pour une base bibliographique), et j'ai une autre solution pour l'instant (qui passe par un serveur distant).
Je vais tester ton script sur d'autres fichiers et te raconterai mes éventuels déboires, et il y en aura certainement vu que je commence seulement python.

Bon week-end

Commentaire de baouh le 17/05/2009 15:23:27

re-salut,
J'ai fait un premier test et je n'arrive toujours pas à utiliser ton script. En ouvrant ton script et en lançant le shell, j'ai un message "invalid syntax" et me surligne le second guillement double de la ligne 81 :
   print "ERROR: file %s could not be sync" % filesrc

Avant de chercher plus loin, j'utilise la version 3.0.1 de Python, est-ce que ça peut être l'origine du problème ?

Quoiqu'il en soit, je n'ai pas réussi à faire un test de ton script comme l'exemple donné. Est-ce que tu vois une explication ?

Pour t'expliquer un de mes besoins, je souhaite synchroniser ma bibliographie (documents + notes), stockée dans zotero (une extension de firefox pour gérer une biblio). Comme zotero offre désormais une solution de synchronisation, je devrais m'en sortir... sauf que cela ne marche pas non plus [version beta] :( Plus généralement, j'ai besoin de plusieurs scripts pour copier et synchroniser des fichiers (exporter de bases de données etc.) entre postes en passant par une clé USB, et aussi vers un serveur de fichiers. Du coup ton script m'intéresse ;)

Enfin, pour partager un dossier entre ordis, tu peux jeter un oeil à dropbox... mais je ne sais pas ce que ça vaut en terme de sécurité etc.

@+

Commentaire de wkenw le 17/05/2009 22:46:49

Bonisoir Baouh,
je pense que c'est effectivement l'origine du problème : je ne me suis jamais penché sur Python 3, mais il me semble que print y devient une fonction : print()
Du coup, la syntaxe serait effectivement fausse. Je travaille avec Python 2.6.
Bon, je n'ai pas trop compris ton histoire de clé USB et de serveur de fichiers. Tu fais passer tous les fichiers zotero sur ta clé et tu la copies sur tous tes ordis, c'est ça ? Le script peut effectivement te permettre de faire cela, et de façon automatique, avec ASync.bat.
Par contre, le script ne fusionne pas les fichiers. Impossible, donc, de modifier un fichier sur plusieurs ordis simultanément. Je ne sais pas si cela a une importance dans ton cas.

bonne soirée

PS : merci pour dropbox et zotero : ces prgms ont l'air intéressants :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pb de sauvegarde avec pythonwin [ par vivelesgnous ] bonjour je débute sous python et je n'arrive pas à sauvegarder mes travaux. j'ai télécharger pythonwin 2.3.5 ainsi que pyton 2.3.5 et je travaille sou Zénity, rsync, script bash de sauvegarde de répertoires sur disque usb [ par stooff ] Bonjour à tous. Ne trouvant pas de rubrique bash, bourne shell ou assimilé, je poste dans la rubrique la plus proche du contenu de ce post. Ne trouv Passage de parametres [ par dahrprog ] Bonjour :) , je viens de monter un petit programme de sauvegarde automatisé , g deux fichiers Python , une pour l'interface , les bouttons , parcourir


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales