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

Windows 7 Discussion :

Clonage de répertoire programmé


Sujet :

Windows 7

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Clonage de répertoire programmé
    Slt,

    Je souhaites cloner certaine répertoires de mon disque vers un disque externe.
    Ex :
    (hdd) D:/data, D:/perso, D:/boulot
    vers
    Extern Z:/clone/data, Z:/clone/perso, Z:/clone/boulot

    Je souhaites que cela puisse être fait de manière programmé à chaque démarrage du PC, par exemple ou à une date/heure spécifié et cyclique, tous les 12 du mois à 15h, pas exemple.

    Connaissez vous un outil simple pour ce faire ?
    Gratuit/payant, peu importe.
    Doit pouvoir fonctionner sans accès internet (pas de validation, ex...)

    PC sous windows 7 Edition intégral SP1 x64.

    Merci

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Tu as évidemment tous les logiciels de backup (cobian backup, syncback, .....)

    Mais tu as surtout aussi de base intégré à windows l'utilitaire robocopy que tu peux intégré dans un script ou lancer via une tache planifiée pour automatiser la chose.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Super, merci.

    Je vais tester robocopy, l'option mir ou ox me parait être la plus souhaitable.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Re,

    Alors robocopy, fait l'affaire, mais il y a un point qui me tracasse.

    La destination du backup est un hdd externe.

    Lors de l’exécution du .bat robocopy, je copie par exemple : D:\Toto vers I:\backup
    Mais lors de la connexion du lecteur il peut prendre une autre lettre.

    J'ai essayer de faire un transfert vers le nom de volume sans succès.

    J'ai trouver une méthode qui va tester si un lecteur "i" existe et s'il possède le répertoire de sauvegarde.
    Problème... il faut que je fasse le teste pour quasi toutes les lettres de l’alphabet. :-)

    Y a t-il une solution plus simple et pérenne ?

    Merci

  5. #5
    Membre actif
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Points : 246
    Points
    246
    Par défaut
    Citation Envoyé par Alcine Néal Voir le message
    Re,

    Alors robocopy, fait l'affaire, mais il y a un point qui me tracasse.

    La destination du backup est un hdd externe.

    Lors de l’exécution du .bat robocopy, je copie par exemple : D:\Toto vers I:\backup
    Mais lors de la connexion du lecteur il peut prendre une autre lettre.

    J'ai essayer de faire un transfert vers le nom de volume sans succès.

    J'ai trouver une méthode qui va tester si un lecteur "i" existe et s'il possède le répertoire de sauvegarde.
    Problème... il faut que je fasse le teste pour quasi toutes les lettres de l’alphabet. :-)

    Y a t-il une solution plus simple et pérenne ?

    Merci
    Bonjour,

    tester les lettres de l'alphabet et associer celle qui correspond à ton disque USB ne me semble pas une mauvaise solution (ça ne prend pas plus d'une seconde à l'exécution) - une simple boucle For en batch fera l'affaire :

    For %%i in (C D E F G H I J K L M N O P Q R S T U V W Y Z) do if exist %%i:\Ton_rep_de_sauv\ set Sauv=%%i:

    ... et dans ce cas ta cible est définie par la variable "Sauv" que tu dois renseigner en cible (%Sauv%) dans ta commande robocopy


    Après, tu as aussi la possibilité de forcer au préalable l'attribution d'une lettre à ton périphérique de sauvegarde par la commande diskpart (et avec le lot de commandes qui vont bien dans un fichier du genre diskpart.txt), mais ce n'est la meilleure solution à mon sens.
    "L'erreur est humaine mais un véritable désastre nécessite un ordinateur." de William Henry, dit Bill Gates

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Slt,

    Merci pour votre aide.

    Je pense donc en avoir fini pour le moment avec ce batch.

    Copy de x répertoire d'un lecteur vers un autre en mode MIR.

    Voici le fichier au cas où vous verriez des boulettes ou des optimisation possible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    @echo OFF
    
    REM #################### Gestion environnement ####################
    chcp 1252
    SETLOCAL ENABLEdelayedExpansion
    
    REM #################### Constantes ####################
    SET FILE=*.*
    SET SOURCE=D:\
    SET DESTINATION=Backup D\
    SET LOG_FILE=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%.log
    
    SET REP_1=xxx
    SET REP_2=yyy
    SET REP_3=zzz
    
    REM #################### Recherche dossier source ####################
    if not exist D:\ goto :noREPSRC
    
    REM #################### Recherche dossier destination ####################
    For %%i in (E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\"%DESTINATION%"\ (
    SET DESTINATION=%%i:\%DESTINATION%
    goto :backup
    )
    
    @echo.
    @echo Dossier de destination inaccessible !
    @echo.
    
    goto :end
    
    REM #################### Lancement Backup ####################
    :backup
    
    @echo.
    @echo Backup D:\ en cours ...
    @echo.
    @echo.
    
    For /L %%i in (1,1,3) do (
    
    SET SRC=!SOURCE!!REP_%%i!
    SET DEST=!DESTINATION!!REP_%%i!
    
    echo Copie de "!SRC!" vers "!DEST!"
    robocopy "!SRC!" "!DEST!" "!FILE!" /MIR /R:1 /W:1 /log+:"%DESTINATION%%LOG_FILE%" /NFL /NDL
    call :Aff_Err
    )
    
    @echo.
    @echo Backup fait !
    @echo.
    
    REM #################### Pas de dossier source ####################
    :noREPSRC
    @echo.
    @echo Dossier de sauvegarde inaccessible !
    @echo.
    
    REM #################### FIN ####################
    :end
    pause
    
    REM #################### Fonction d'affichage du statut ####################
    :Aff_Err
    if %ERRORLEVEL% GTR 7 echo !!! Erreur de copie sur certains fichiers
    if %ERRORLEVEL% EQU 7 echo + Copie OK - Fichiers supplémentaires trouvés - Fichiers incompatibles trouvés
    if %ERRORLEVEL% EQU 6 echo + Aucune copie - Fichiers supplémentaires trouvés - Fichiers incompatibles trouvés
    if %ERRORLEVEL% EQU 5 echo + Copie OK - Fichiers incompatibles trouvés
    if %ERRORLEVEL% EQU 4 echo + Aucune copie - Fichiers incompatibles trouvés
    if %ERRORLEVEL% EQU 3 echo + Copie OK - Fichiers supplémentaires trouvés
    if %ERRORLEVEL% EQU 2 echo + Aucune copie - Fichiers supplémentaires trouvés
    if %ERRORLEVEL% EQU 1 echo + Copie OK
    if %ERRORLEVEL% EQU 0 echo + Aucune copie
    @echo.
    @echo.
    goto :EOF

  7. #7
    Membre actif
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Points : 246
    Points
    246
    Par défaut
    Bonjour,

    quelques commentaires, et parce que la critique est facile une fois que le boulot est fait ;-) :

    La fonction d'affichage du statut (l. 65 à l. 74) a t-elle été testée ?
    > Le code de sortie se fait-il bien sur la commande robocopy (l. 46) et pas sur le call (l. 47) ?
    > Pourquoi ne pas plutôt concaténer le contenu de la fonction d'affichage du statut après la commande robocopy de la ligne 46 ?

    Interrogation de dernière minute : Si robocopy ne fini pas l'opération de sauvegarde (erreur ou saturation de la destination, fichiers ignorés, etc.) mais qu'il se ferme correctement, le code de sortie peut-il être différent de 0 ?

    Si absence de la source (l. 54 à l. 58), l'écho pourrait plutôt renvoyer le message "Dossier source inaccessible !" pour éviter la confusion avec le dossier de destination (ou sauvegarde comme certains le nommeraient)

    La section de fin (l. 60 à 62) me semble en trop, pour certaines sections (l. 53 et l. 59) j'aurais mis une pause + "goto :eof" pour éviter la lecture des lignes suivantes (et les echo indésirables qui suivront...)

    Supprimer la ligne 77 ?

    L'ajout d'un contrôle sur l'espace disponible de la destination avant sauvegarde pourrait être intéressant (ou un echo précisant l'information en fin de sauvegarde)


    En tout cas, bravo pour cette sauvegarde "sur mesure", avec ses commentaires et points de contrôle !
    "L'erreur est humaine mais un véritable désastre nécessite un ordinateur." de William Henry, dit Bill Gates

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Slt,

    Merci pour se retour.

    Oui, j'ai testé l'affichage statut en créant des différences de comportement pour tester les "erreurs" de 0 à 7.
    Ca fonctionne chaque fois pour chaque lancement de la ligne robocopy.

    Et en effet, je pourrais revoir cette "fonction" devenu inutile en l'état et en l'intégrant à la boucle.
    C'est un reliquat d'avant la boucle ou j'ai galéré avant de connaitrre la subtilité de la ligne 5 et des !

    Merci pour l'idée de contrôle espace, ça peut en effet être un bon plus.

    Interrogation de dernière minute
    Bonne question...
    Aucune idée. :-)

  9. #9
    Membre actif
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Points : 246
    Points
    246
    Par défaut
    Pour les codes de sortie de robocopy, j'avais fait il y a quelques années un travail là-dessus, et dans mes souvenirs les résultats n'étaient pas ceux que j'espérais au départ.

    > Je vais regarder si je retrouve cette étude.

    PS : Désolé, j'avais fait une petite mise à jour de mon dernier message pendant la rédaction de ta réponse.
    "L'erreur est humaine mais un véritable désastre nécessite un ordinateur." de William Henry, dit Bill Gates

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Re,

    Voici mon batch "optimisé" et surtout avec un test d'espace libre pour la sauvegarde.

    Pas simple en batch de passer le problème de gestion des nombres limité à 32bts.
    J'ai donc user d'un ruse classique... la suppression des 3 dernier chiffres équivalent à un /1000 et renvoyant un chiffre en kilo octet.

    Sans oublier que l'espace dispo n'est pas cleui du libre sur le disque de sauvegarde, mais comme je fait du /MIR, l'espace dispo, c’est l'espace libre + l'espace de la sauvegarde précédente.

    J'ai également, dans la recherche du lecteur de sauvegarde mi une exception sur la lettre du lecteur source dans le cas d'un transfert de dossier à dossier.

    J'ai laisse le :end au cas on on ajoute quelque chose.

    Voilà, si ça peut servir à d'autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    @echo OFF
    
    REM #################### Gestion environnement ####################
    chcp 1252
    SETLOCAL ENABLEdelayedExpansion
    
    REM #################### Constantes ####################
    SET FILE=*.*
    SET LECTEUR_SOURCE=D
    SET DESTINATION=Backup D\
    SET LOG_FILE=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%.log
    
    REM ### Liste des dossiers à copier
    SET REP_1=aaa
    SET REP_2=bbb
    SET REP_3=ccc
    
    REM #################### Recherche lecteur source ####################
    SET SOURCE=%LECTEUR_SOURCE%:\
    
    if not exist %SOURCE% goto :noREPSRC
    
    REM #################### Recherche dossier destination ####################
    REM ### ... et on interdit la rechercher dans le lecteur source
    For %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if not %%i == %LECTEUR_SOURCE% (
    
    if exist %%i:\"%DESTINATION%"\ (
    
    SET LETTRE_DEST=%%i
    
    SET DESTINATION=!LETTRE_DEST!:\%DESTINATION%
    
    goto :space
    )
    )
    )
    
    echo.
    echo Dossier de destination inaccessible !
    echo.
    
    goto :end
    
    :space
    REM #################### Recuperation taille dossiers sources ####################
    echo Calcul espace sauvegarde requis...
    
    REM echo Calcul de la taille de la source en cours ...
    
    For /L %%j in (1,1,3) do (
    
    SET SRC=!SOURCE!!REP_%%j!
    
    SET TAILLE=0
    
    for /F "tokens=3 delims= " %%x in ('DIR /S /-C "!SRC!" 2^>nul ^| findstr /E /L "octets" ') do (SET TAILLE=%%x)
    
    REM ### On supprime les 3 derniers chiffres (equivalent à /1000)
    SET /a TAILLE=!TAILLE:~,-3!
    
    SET /a TAILLE_TOTAL=!TAILLE_TOTAL!+!TAILLE!
    )
    REM echo Source - Taille Dossiers = %TAILLE_TOTAL% kilo octets
    
    REM #################### Recuperation taille repertoire destination ####################
    REM echo Calcul de la taille du dossier de destination en cours ...
    
    SET TAILLE=0
    
    for /F "tokens=3 delims= " %%y in ('DIR /S /-C "X:\Backup D" 2^>nul ^| findstr /E /L "octets" ') do (SET TAILLE=%%y)
    
    REM ### On supprime les 3 dernier chiffre (equivalent à /1000)
    SET /a TAILLE_DEST=!TAILLE:~,-3!
    
    REM echo Destinations - Taille dossiers = %TAILLE_DEST% kilo octets
    
    REM #################### Recuperation Espace libre destination ####################
    FOR /F "usebackq tokens=3" %%z IN (`DIR /-C %LETTRE_DEST%: ^|^ FIND /I "octets libres"`) DO SET FREESPACE=%%z
    
    REM ### On supprime les 3 dernier chiffre (equivalent à /1000)
    SET /a FREESPACE=!FREESPACE:~,-3!
    
    REM echo Espace Libre Destination= %FREESPACE%
    
    SET /a FREESPACE_TOTAL=%FREESPACE%+!TAILLE_DEST!
    
    REM echo Destination - Espace libre total= %FREESPACE_TOTAL% kilo octets
    
    REM #################### TEST Espace libre suffisant ####################
    if %TAILLE_TOTAL% LSS %FREESPACE_TOTAL% (
    
    echo.
    echo +++ Espace de sauvegarde sur %DESTINATION% suffisant +++
    echo.
    
    goto :backup
    )
    if %TAILLE_TOTAL% GTR %FREESPACE_TOTAL% (
    
    echo.
    echo !!! Espace de sauvegarde sur %DESTINATION% insuffisant !!!
    echo.
    
    goto :end
    )
    
    REM #################### Lancement Backup ####################
    :backup
    
    echo.
    echo Backup en cours ...
    echo.
    echo.
    
    For /L %%i in (1,1,3) do (
    
    SET SRC=!SOURCE!!REP_%%i!
    SET DEST=!DESTINATION!!REP_%%i!
    
    echo Copie de "!SRC!" vers "!DEST!"
    robocopy "!SRC!" "!DEST!" "!FILE!" /MIR /R:1 /W:1 /log+:"%DESTINATION%%LOG_FILE%" /NFL /NDL
    
    if !ERRORLEVEL! GTR 7 echo !!! Erreur de copie sur certains fichiers
    if !ERRORLEVEL! EQU 7 echo + Copie OK - Fichiers supplementaires trouves - Fichiers incompatibles trouves
    if !ERRORLEVEL! EQU 6 echo + Aucune copie - Fichiers supplementaires trouves - Fichiers incompatibles trouves
    if !ERRORLEVEL! EQU 5 echo + Copie OK - Fichiers incompatibles trouves
    if !ERRORLEVEL! EQU 4 echo + Aucune copie - Fichiers incompatibles trouves
    if !ERRORLEVEL! EQU 3 echo + Copie OK - Fichiers supplementaires trouves
    if !ERRORLEVEL! EQU 2 echo + Aucune copie - Fichiers supplementaires trouves
    if !ERRORLEVEL! EQU 1 echo + Copie OK
    if !ERRORLEVEL! EQU 0 echo + Aucune copie
    )
    
    echo.
    echo Backup fait !
    echo.
    
    goto :end
    
    REM #################### Pas de dossier source ####################
    :noREPSRC
    echo.
    echo !!! Lecteur source inaccessible !!!
    echo.
    
    REM #################### FIN ####################
    :end
    pause

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/08/2008, 14h40
  2. Création Répertoire par Programmation
    Par mxh77 dans le forum 4D
    Réponses: 3
    Dernier message: 27/09/2007, 17h23
  3. [AIX] Programmer un deplacement de répertoire
    Par top_eagle dans le forum AIX
    Réponses: 6
    Dernier message: 08/06/2007, 16h42
  4. Réponses: 1
    Dernier message: 22/04/2007, 14h50
  5. Réponses: 5
    Dernier message: 01/02/2006, 21h55

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