Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:se:ms-windows:robocopy-sauvegarder-avec-windows [2020/04/17 15:55] – ↷ Page déplacée de informatique:se:linux:se:ms-windows:robocopy-sauvegarder-avec-windows à informatique:se:ms-windows:robocopy-sauvegarder-avec-windows jside | informatique:se:ms-windows:robocopy-sauvegarder-avec-windows [2020/04/17 18:06] (Version actuelle) – ↷ Page déplacée de loisirs:podcasts:informatique:se:ms-windows:robocopy-sauvegarder-avec-windows à informatique:se:ms-windows:robocopy-sauvegarder-avec-windows jside | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Sauvegarder ses documents avec Windows ====== | ||
+ | |||
+ | {{ informatique: | ||
+ | Testé **non** | Nécessite {{informatique: | ||
+ | |||
+ | |||
+ | Cet article est extrait du podcast [[https:// | ||
+ | |||
+ | ===== - Objectif ===== | ||
+ | |||
+ | J'ai une de mes connaissances qui m'a demandé **comment faire une sauvegarde** avec Windows.\\ | ||
+ | Il s'agit bien d' | ||
+ | |||
+ | Je me suis fixé comme objectif de **ne pas utiliser de programmes complémentaires** à ceux déjà existants sous Windows et d' | ||
+ | |||
+ | Voici mes explications. Travaux pratiques pour effectuer une sauvegarde " | ||
+ | |||
+ | |||
+ | |||
+ | Le but est bien de maintenir l’image parfaite des dossiers ou documents de l' | ||
+ | Pour ne pas faire une sauvegarde intégrale de tous vos dossiers à chaque fois, on va essayer d' | ||
+ | |||
+ | Pour plus de simplicité, | ||
+ | |||
+ | ===== - Solution ===== | ||
+ | |||
+ | Le programme choisi est **robocopy**. Il s'agit d'un programme en **ligne de commande**. Pour l' | ||
+ | |||
+ | Au premier lancement, le programme fait une copie intégrale de vos documents vers l' | ||
+ | Aux lancements suivants, | ||
+ | |||
+ | ===== - Le code ===== | ||
+ | |||
+ | ==== - Sauvegardes des dossiers identifiés ==== | ||
+ | |||
+ | J' | ||
+ | |||
+ | <code DOS sauvegarde_current_user.bat> | ||
+ | @echo off | ||
+ | REM A ecrire dans un fichier sauvegarde_all.bat | ||
+ | REM On sauvegarde tous les dossiers des Users et AppData | ||
+ | |||
+ | REM Adapter les variables ci-dessous si nécessaire | ||
+ | |||
+ | set racine_sauvegarde=e: | ||
+ | set dossier_sauvegarde=%racine_sauvegarde%\%computername% | ||
+ | if not exist " | ||
+ | set " | ||
+ | set " | ||
+ | set " | ||
+ | set rbcpy_errorlevel=0 | ||
+ | |||
+ | |||
+ | REM ** on cree le dossier de sauvegarde s'il n' | ||
+ | IF NOT EXIST " | ||
+ | |||
+ | goto save_3 | ||
+ | |||
+ | REM ** on commence la sauvegarde 1 | ||
+ | set " | ||
+ | set " | ||
+ | call : | ||
+ | |||
+ | |||
+ | REM ** on commence la sauvegarde 2 | ||
+ | set " | ||
+ | set " | ||
+ | call : | ||
+ | |||
+ | |||
+ | REM ** on commence la sauvegarde 3 | ||
+ | :save_3 | ||
+ | set " | ||
+ | set " | ||
+ | call : | ||
+ | |||
+ | |||
+ | GOTO FIN | ||
+ | |||
+ | |||
+ | :ERREUR | ||
+ | echo ********** FIN ANORMALE DU TRAITEMENT ***** | ||
+ | exit /B 1 | ||
+ | |||
+ | :FIN | ||
+ | REM ** on termine la sauvegarde par marquer un horodatage | ||
+ | echo ********** FIN NORMALE DU TRAITEMENT ***** | ||
+ | exit /B 0 | ||
+ | |||
+ | |||
+ | |||
+ | rem CALLROBOCOPY SOURCE DESTINATION LOG | ||
+ | rem | ||
+ | rem SOURCE [IN, STR] Nom de la variable contenant le chemin de la source à copier | ||
+ | rem DESTINATION [IN, STR] Nom de la variable contenant le chemin de la destination | ||
+ | rem LOG [IN, STR] Chemin pour accéder au LOG du script | ||
+ | rem | ||
+ | : | ||
+ | call : | ||
+ | set dateTime=%dateCUR%_%timeCUR% | ||
+ | echo %dateTime% - DEBUT - sauvegarde " | ||
+ | if not exist " | ||
+ | set " | ||
+ | set " | ||
+ | echo Lancement de la copie de %source_sauvegarde% | ||
+ | echo Lancement de la copie de %source_sauvegarde% >>" | ||
+ | Robocopy.exe " | ||
+ | set rbcpy_errorlevel=%errorlevel% | ||
+ | | ||
+ | REM ** on termine la sauvegarde par marquer un horodatage | ||
+ | call : | ||
+ | set dateTime=%dateCUR%_%timeCUR% | ||
+ | echo %dateTime% - FIN - sauvegarde effectuee avec le code %rbcpy_errorlevel% | ||
+ | | ||
+ | if %rbcpy_errorlevel% NEQ 0 ( | ||
+ | echo ROBOCOPY s'est executé avec le code erreur %rbcpy_errorlevel%. Vérifier les logs dans %TMP%\robocopy | ||
+ | goto ERREUR | ||
+ | ) ELSE ( | ||
+ | GOTO :EOF | ||
+ | ) | ||
+ | |||
+ | |||
+ | |||
+ | rem GETLOCALDATETIME RESULTDATE RESULTTIME | ||
+ | rem Extraire la date et l' | ||
+ | rem Extraire la date au format YYYYMMDD et l' | ||
+ | rem RESULTDATE [OUT, STR] Nom de la variable contenant le date au format YYYYMMDD | ||
+ | rem | ||
+ | rem RESULTTIME [OUT, STR] Nom de la variable contenant l' | ||
+ | rem | ||
+ | : | ||
+ | set RESULT= | ||
+ | for /f " | ||
+ | if not defined RESULT set RESULT=%%A | ||
+ | ) | ||
+ | if not defined RESULT set RESULT=0 | ||
+ | if %RESULT%==0 ( | ||
+ | if " | ||
+ | if " | ||
+ | ) else ( | ||
+ | if " | ||
+ | if " | ||
+ | ) | ||
+ | goto :EOF | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center round alert 60%> | ||
+ | Il ne faut pas modifier les fichiers et dossiers de la sauvegarde externe au risque de perdre votre travail. | ||
+ | </ | ||
+ | |||
+ | ==== - Sauvegardes les dossiers de tous les utilisateurs ==== | ||
+ | |||
+ | Pour se simplifier la tâche on pourrait sauvegarder tous les fichiers et dossiers présents dans le dossier des utilisateurs.\\ | ||
+ | Mais ce n'est pas si simple, car les dossiers des utilisateurs peuvent être protégés en lecture. Il faudrait avoir des droits plus étendus. On parle alors de droit ACL. Une exécution du script avec les droits administrateur permettrait de contourner le problème. | ||
+ | |||
+ | <code DOS sauvegarde_all.bat> | ||
+ | REM A ecrire dans un fichier sauvegarde_all.bat | ||
+ | |||
+ | REM Adapter les variables ci-dessous si nécessaire | ||
+ | |||
+ | set source_sauvegarde=%homedrive%%homepath%\.. | ||
+ | set racine_sauvegarde=e: | ||
+ | set destination_sauvegarde=%racine_sauvegarde%\%computername% | ||
+ | |||
+ | REM ************************************** | ||
+ | REM ***** NE PAS MODIFIER EN DESSOUS ***** | ||
+ | REM ************************************** | ||
+ | |||
+ | REM ** on cree le dossier de sauvegarde s'il n' | ||
+ | IF NOT EXIST " | ||
+ | |||
+ | REM ** on commence la sauvegarde | ||
+ | Robocopy.exe " | ||
+ | |||
+ | REM ** on termine la sauvegarde par marquer un horodatage | ||
+ | set dateCUR=%date: | ||
+ | set timeCUR=%time: | ||
+ | set dateTime=%dateCUR%_%timeCUR% | ||
+ | echo %dateTime% sauvegarde " | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== - Vérification ===== | ||
+ | |||
+ | Il va falloir vérifier que les fichiers contenu dans la **source** soit également dans la **destination**. Pas un de plus, pas un de moins. C'est là que les choses se corsent. Lors de mes tests, il est apparu que l' | ||
+ | Il a fallu que je retourne dans une fenêtre de **ligne de commandes** (fenêtre DOS) et jouer avec la commande '' | ||
+ | |||
+ | Je vous détaillera cela ultérieurement. Revenez plus tard sur cette page SVP. | ||
+ | |||
+ | ===== - Évolutions ===== | ||
+ | |||
+ | |||
+ | Prochainement | ||
+ | * une vidéo pour montrer comment j'ai fait. | ||
+ | * la vérification du contenu synchronisé. | ||
+ | * le changement de lecteur à chaque branchement d'un disque externe ? | ||
+ | * faut-il préférer une sauvegarde externe ou interne ? | ||
+ | * faut-il faire confiance à une sauvegarde sur clé USB, disque SSD, DVD ? | ||
+ | * corriger les fautes. | ||
+ | * compléter l' | ||
+ | |||