URL: https://linuxfr.org/users/bkfox/journaux/synctrex-outil-de-synchronisation Title: Synctrex: outil de synchronisation Authors: bkfox Date: 2016年05月10日T16:54:07+02:00 License: CC By-SA Tags: synchronisation, rsync, synctrex, synchronisation_fichiers, sauvegarde et python Score: 12 Bonjour nal', Ces derniers temps j'ai travaillé à une petite solution en console de synchronisation de fichiers en Python qui permet d'utiliser différents utilitaires et supportant différents protocoles. L'idée derrière ce programme est de fournir un moyen rapide pour effectuer une ou plusieurs synchronisations, avec une interface standardifiée. Ces synchronisations sont déclarées dans un fichier YAML (ce qui permet d'en utiliser toute la puissance également), peuvent être importées d'autres fichiers, de les personnaliser, de les regrouper dans un ou plusieurs groupes. Malgré que ça soit une couche supplémentaire, il reste possible de garder un certain contrôle sur le processus, avec d'une part un système d'event (qui exécute du Python ou du Bash), d'autre part la possibilité de spécifier des options supplémentaires aux synchronisations. Synctrex détecte également quand la source pointe sur un device de block et vérifie qu'il soit bien monté avant de lancer la synchronisation. ```yaml syncs: base: events: pre_sync: "`echo start synchronizing {sync.name}`" fail: "`echo that failed`" success: print('that succeed for ', sync.name) dest: /dev/disk/by-label/backup files: - .config srv_to_hdd: groups: base source: user@server.net: local_to_hdd: groups: base source: /home/local_user ``` Je voulais revenir sur une autre feature également celle des Groupes. Une synchronisation peut avoir un ou plusieurs Groupes, qui remplissent deux rôles, pouvoir lancer la synchronisation des tous les enfants d'un même groupe et faire une sorte d'héritage d'attributs. Cet _héritage_ est effectué juste avant la synchronisation, de la même façon que les classes en Python (de gauche à droite, on remplit que les attributs vides), avec une petite exception: le premier groupe dont hérite la synchronisation peut changer quand elle est effectué suite à la synchronisation d'un parent. Cela permet par exemple de pouvoir spécifier une source différente alors que toutes les autres options sont les mêmes. ```yaml # synctrex -c test.yaml child -> child.dest = '/tmp/a' # synctrex -c test.yaml base -> child.dest = '/tmp/a' # synctrex -c test.yaml other_dest -> child.dest = '/tmp/b' syncs: base: events: pre_sync: print('start', sync.name) success: print('YOLOOO l\\'elfe dans la place!') dest: /tmp/a options: - verbose - progress - update - preserve other_dest: dest: /tmp/b child: groups: [base, other_dest] source: /proc files: - cmdline ``` Alors pour le moment, il n'y a que la synchronisation de fichiers locaux, via ssh, ou rsync qui est supporté. Je veux par la suite utiliser aussi lftp pour les différents protocoles qu'il supporte, mais aussi d'autres protocoles comme IMAP par exemple. Voilà, ça n'est pas grand chose pour le moment, je dois encore bosser dessus d'ici les semaines qui viennent, mais c'est déjà utilisable. Je suis en train de voir aussi pour faire un logo un peu moche mais mignon (j'en avais un sur papier mais je l'ai perdu après une longue absence), ça viendra quand la motivation me prendra dans ses bras. https://github.com/bkfox/synctrex

AltStyle によって変換されたページ (->オリジナル) /