IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Piloter rsync sans passer par os.


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 224
    Points : 77
    Points
    77
    Par défaut Piloter rsync sans passer par os.
    Bonjour,

    J'ai actuellement mon script de backup (backupeur) écrit en bash et depuis quelque temps j'envisage de re-écrire. Mon script utilise rsync pour gérer la copie mais autour il y a la rétention, les notifications par mail, les logs...

    Il est composé en plusieurs plugins suivant l'action à faire.

    Avant de commencer et après quelques recherches (sans résultats) je voudrais savoir si rsync pour être totalement piloté via python ou alors via les commandes os ?

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour,

    Avant de commencer je n'ai pas trop compris le titre "Piloter rsync sans passer par os" et, plus loin, "... totalement piloté via python ou alors via les commandes os ?". Ca me semble contradictoire mais je me lance quand même.

    De façon générale, dans un environnement Unix/Linux, tout ce que tu fais dans un shell script peut être fait dans un script Python. Pas besoin de parcourir très longtemps les modules "plutôt" système de Python et de voir les noms des fonctions proches de ceux des fonctions C ou des commandes Unix pour "deviner" que tout ça, à la base, baignait plutôt dans un environnement Unix / Unix-like. Le passage shell script => script Python se fait donc généralement en douceur et sans casse. L' "unixien" n'est pas vraiment dépaysé.

    "Piloter" rsync - comme ça doit être le cas dans ton bash actuel - va consister à écrire/générer une ou des commandes rsync avec les options et les arguments qui vont bien et à l'exécuter soit très directement via os.system, soit via le module subprocess (Popen, call, ...) en gérant plus finement l'entrée et les sorties standards ainsi que les codes retour.

    Pour les "à côtés" (rétention (c'est quoi ?), les notifications par mails et les fichiers logs), il y a tout ce qu'il faut en Python pour faire ça et, au pire, si c'est trop fouillé ou que tu n'arrives pas à t'en débrouiller du premier coup, tu peux toujours, comme avec rsync, faire faire ça par le shell. Attention, quand même, à ce que ton script Python final ne soit pas qu'une longue liste de os.system() ...

    Personnellement, je trouve que Python est très bien adapté à ce genre de développement et est un très bon compromis entre le bash qui est très macroscopique (et - allez je le dis - parfois très lourdingue et d'une lisibilité toute relative) et le C où il faut tout faire.

    Bref : lance toi !
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 224
    Points : 77
    Points
    77
    Par défaut
    Salut,
    Merci de te lancer

    Avant de commencer je n'ai pas trop compris le titre "Piloter rsync sans passer par os" et, plus loin, "... totalement piloté via python ou alors via les commandes os ?". Ca me semble contradictoire mais je me lance quand même.
    En fait je voulais savoir si il y existe un module à importer dans python pour utiliser les fonctions rsync ou bien si il faut passer par os.system(rsync....) comme je le fais actuellement avec bash.

    La plus grosse raison de vouloir passer de bash à python est au niveau de la gestion de la configuration. En bash il est difficile de gérer des tableaux multiniveaux alors qu'en python y a tout ce qu'il faut. Accessoirement j'envisage de créer une interface web avec django.

    C'est surtout au niveau de rsync que je me pose des questions, pour les mails, les logs j'ai déjà fais dans d'autres scripts python donc pas de problèmes.

    La rétention c'est le nombre de jour, version de sauvegarde que tu souhaite conserver en historique.

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Concernant le choix de passer d'un shell script à Python, je pense qu'on est sur la même longueur d'onde ...

    Sinon, sur PyPI (Python Package Index) une recherche "rsync" te donne ça.

    Par contre, je n'ai rien testé.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 224
    Points : 77
    Points
    77
    Par défaut
    En bon débutant je ne connaissais pas PyPi

    Je pense que je vais commencer le portage en python en lancant rsync par os.system. Ca sera la première étape.

    Merci pour toute tes réponses.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Ne jetons pas trop vite bash aux orties. Je viens moi-même de convertir un simple script bash (dash en réalité) qui lance plusieurs requêtes http simultanées vers un serveur web: 10 lignes de code. Mon script python en fait 55. Le multiprocessing en bash est d'une simplicité enfantine, mais c'est nettement plus ardu en python pour qui n'en fait pas tous les jours.

    En ce qui concerne rsync, j'ai jeté un coup d'oeil au code de rsync.py et, sans enlever de mérite à son auteur, il lui manque la caractéristique essentielle de rsync: la synchronisation par rolling-checksum. Le script python semble se limiter à la comparaison des os.stat() pour décider si un fichier doit être sauvegardé ou pas.

    Si tu veux vraiment utiliser la puissance du rolling-checksum, regarde ce lien. Mais tu risques de te retrouver avec un code gigantesque pour remplacer une seule ligne de bash...

    "Do one thing well"
    This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together.
    http://en.wikipedia.org/wiki/Unix_philosophy
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

Discussions similaires

  1. Imprimer un TIFF sans passer par PostScript
    Par iubito dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 22/03/2004, 21h44
  2. Réponses: 10
    Dernier message: 24/02/2004, 13h28
  3. Réponses: 4
    Dernier message: 05/02/2004, 19h18
  4. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 20h13
  5. [Kylix] Débrider Kylix sans passer par le Net
    Par BXDSPORT dans le forum EDI
    Réponses: 1
    Dernier message: 23/03/2003, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo