Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer



  1. #1
    balto1717

    Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer


    ------

    Bonjour je suis en train de développer un programme qui doit effectuer des sauvegardes automatiques de données, mon programme permet actuellement de faire ca mais copie et chiffre uniquement des dossiers qui ne sont composé que de simple fichiers et bien sur dans la vie réelle les dossiers sont souvent composés de sous dossier etc. Mon programme ne marche donc pas dés que je rajoute un sous dossier

    Donc ma question est comment faire pour copier des dossiers composés de N sous dossiers eux même composés de M fichiers tout en utilisant ma fonction de chiffrement prenant en entrée le chemin du fichier à chiffrer, car si il fallait juste les copier j'utiliserais shtutil.copytree mais dans ce cas la mes données ne sont pas chiffrées

    voici mon programme :

    def sauvegarde_auto():
    go = True
    while go == True:
    os.chdir('../testSharepoint')
    for f in os.listdir(os.getcwd()):
    if not os.path.exists("../Python/Administrateur/Fichiers/" + f): #je vérifie ici que le dossier n'a pas déjà été copié dans l'endroit où je stock les sauvegardes
    if os.path.isdir(f):
    os.chdir(("../Python")) #je créer et stock les clés de cryptage
    password = generer_cles(32, 1)
    os.chdir("../testSharepoint/" + f)
    print("Le dossier ",f," contient : ",os.listdir(os.getcwd()))
    os.makedirs("../../Python/Administrateur/Fichiers/" + f)
    for i in os.listdir(os.getcwd()):
    source = i
    destination = "../../Python/Administrateur/Fichiers/" + f +"/" + i
    shutil.copyfile(source, destination)
    chiffrement_AES(password, "1234567890ABCDEF".encode( ), destination) # la fonction qui chiffre mes fichiers
    os.chdir('../')
    else:
    print("Erreur c'est un fichier")
    time.sleep(15) # pause de 15 seconde si aucun nouveau dossier n'est apparu la fonction ne fait rien et ainsi de suite jusqu'à l'arriver d'un nouveau dossier
    print("Nouvelle sauvegarde : ")

    je ne sait pas si c'est très clair mais je début en python, merci d'avance pour votre aide

    -----

  2. #2
    pm42

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    1) tu mets des balises CODE autour de ton programme ou tu clique sur le # dans la barre d'outil. Sinon, c'est illisible
    2) tu utilises les fonction python glob.glob ou os.walk pour récupérer toute l'arborescence
    3) sinon, tu parcoures toi même récursivement : tu écris une méthode qui reçoit un répertoire en entrée, liste tous les fichiers dedans, fait le traitement dessus puis liste tous les répertoires et s'appelle elle-même avec chacun d'entre eux

  3. #3
    balto1717

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Code:
    def sauvegarde_auto():
        go = True
        while go == True:
            os.chdir('../testSharepoint')
            for f in os.listdir(os.getcwd()):
                if not os.path.exists("../Python/Administrateur/Fichiers/" + f):
                    if os.path.isdir(f):
                        os.chdir(("../Python"))
                        password = generer_cles(32, 1)
                        os.chdir("../testSharepoint/" + f)
                        print("Le dossier ",f," contient : ",os.listdir(os.getcwd()))
                        os.makedirs("../../Python/Administrateur/Fichiers/" + f)
                        for i in os.listdir(os.getcwd()):
                            source = i
                            destination = "../../Python/Administrateur/Fichiers/" + f +"/" + i
                            shutil.copyfile(source, destination)
                            chiffrement_AES(password, "1234567890ABCDEF".encode(), destination)
                        os.chdir('../')
                    else:
                        print("Erreur c'est un fichier")
            time.sleep(15)
            print("Nouvelle sauvegarde : ")

  4. #4
    CM63

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Fait une archive ( .zip ou .7z) des fichiers à sauvegarder, ça fait un seul et unique gros fichier, qui contient toute l'arborescence des fichiers et répertoires.

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Citation Envoyé par CM63 Voir le message
    Fait une archive ( .zip ou .7z) des fichiers à sauvegarder, ça fait un seul et unique gros fichier, qui contient toute l'arborescence des fichiers et répertoires.
    Et comment va t'il pouvoir appliquer sa fonction de chiffrement comme ça ? En quoi cela va être plus efficace que shutil.copytree ? Quel est l'intérêt de consommer de la CPU à comprimer/décomprimer quand on peut faire sans et à passer par un fichier intermédiaire qui consomme beaucoup plus de disque ?

  7. #6
    Merlin95

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Il chiffre un seul unique fichier. C'est toujours plus facile de gérer un fichier plutôt qu'une arborescence sur le fs.

  8. #7
    pm42

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Citation Envoyé par Merlin95 Voir le message
    Il chiffre un seul unique fichier. C'est toujours plus facile de gérer un fichier plutôt qu'une arborescence sur le fs.
    Sans connaitre son besoin, il est impossible de savoir si cette solution fonctionne. Si c'est pour faire un backup crypté, ça marche.
    Mais s'il a besoin d'accéder à un fichier donné de l'arborescence copiée, par exemple s'il utilise des fichiers non cryptés en développement puis recopie une arborescence en cryptant sur le site de production alors devoir décrypter un .zip/7z puis le décrypter à chaque fois est très lourd.

  9. #8
    Merlin95

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Pourtant ça ressemble à un besoin classique mais ne peut écarter la possibilités de me tromper mais sinon oui bien sûr que si le besoin est de faire des sauvegardes globales sans autre besoin précis spécifiques.

    Citation Envoyé par balto1717 Voir le message
    un programme qui doit effectuer des sauvegardes automatiques de données

  10. #9
    pm42

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Citation Envoyé par Merlin95 Voir le message
    Pourtant ça ressemble à un besoin classique
    Tu as raison, j'avais raté cette phrase. Effectivement pour du backup, compresser/chiffrer marche bien.

  11. #10
    umfred

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    En regardant la signature de copytree(), on voit un paramètre copy_function qui permet de définir la fonction de copie à appeler, à partir du moment qu'elle a la même définition que copy() ou copy2() à savoir copy(src, dst, *, follow_symlinks=True) ou au moins les paramètres src et dst. https://docs.python.org/3/library/sh...hutil.copytree
    Donc du coup, tu te fais ta fonction de chiffrage et copie perso, qui prend une source et une destination, tu utilises copytree en la passant au paramètre copy_function, et voilà.

  12. #11
    umfred

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    ta fonction serait je pense:
    Code:
    def copieEtChiffre(src, dest):
        shutil.copyfile(src, dest)
        chiffrement_AES(password, "1234567890ABCDEF".encode(), dest)
    
    ...
    shutil.copytree(sourcepath,destinationpath,copy_function=copieEtChiffre)
    ..

  13. #12
    polo974

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Ne pas oublier que s'il faut compresser et chiffrer, il faut commencer par la compression, car après chiffrement, la compression sera inefficace.
    Jusqu'ici tout va bien...

  14. #13
    pm42

    Re : Python copier un dossier comprenant N sous dossier et des fichiers et les chiffrer

    Citation Envoyé par umfred Voir le message
    Donc du coup, tu te fais ta fonction de chiffrage et copie perso, qui prend une source et une destination, tu utilises copytree en la passant au paramètre copy_function, et voilà.
    C'est une bonne idée et sans doute une des façons de faire parmi les plus propres et élégantes mais pour un débutant, implémenter cela en cryptant à la volée et en respectant le follow_symlinks n'est pas immédiat.

Discussions similaires

  1. Création de dossier en fonction de sous-dossier
    Par nahel dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 24/05/2018, 18h07
  2. Dossier "Fichiers communs" sous Vista
    Par Jon83 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 03/12/2011, 13h46
  3. Comment copier-coller le contenu d’un dossier sous Finder ?
    Par Saint-Sandouz dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/12/2010, 16h39
  4. Mot de passe dossier/fichiers
    Par invite9702c63e dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 12/02/2010, 07h11
  5. Comparer le contenu de 2 dossier, de 2 fichiers avec Xp ?
    Par Papy Octet dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 28/01/2008, 09h58