Pour sauvegarder un dossier, le principe est d'en faire un copie et en générale; on fait une version compressée du dossier. Dans notre cas, je vous propose d'utiliser la version ligne de commande de 7-Zip pour faire ce travail.
La syntaxe de la version ligne de commande est :
7z.exe a -t7z "NOM_ARCHIVE" -r "DOSSIER\*" -mx=8 -mmt=on -bd -y
avec:
- NOM_ARCHIVE: Nom de l'archive que vous allez créer
(ex: D:\SAUVEGARDE\MonArchive.7z) - DOSSIER: Chemin du dossier à sauvegarder
(ex: C:\Mes Documents)
Avec ces informations vous pourrez facilement créer un fichier *.cmd ou *.bat permettant de sauvegarder un dossier dans une archive.
Le fichier 7z.exe se trouve généralement dans le dossier: "C:\Program Files\7-Zip", si bien sur vous avez installé 7-Zip avec l'installateur fournis sur le site.
La première option que je vous recommande est de copier cet exécutable dans le dossier où sera déposé votre script, afin de garantir que celui-ci fonctionne même après une désinstallation de 7-Zip. Si vous ne souhaitez pas copier l'exécutable, je vous recommande la syntaxe suivante:
"%ProgramFiles%\7-Zip\7z.exe"Sauvegarde avancée
Si vous aurez envie de garder les versions intermédiaires, il faudra prévoir un script plus évolué, je vous propose une solution avec BackupFolder.cmd. Ce script prend deux paramètres:
- le nom complet (chemin inclus) du dossier à sauvegarder,
- puis le nom complet (chemin inclus) du dossier où seront mis les sauvegardes.
En gros, il s'agit des mêmes paramètres que pour 7z, mais le résultat produit est différent, puisque le nom généré contient la date et l'heure.
Deux remarques importantes :
- Ce fichier de commandes s'attend à ce que le programme 7z..exe se trouve le répertoire "%ProgramFiles%\7-Zip"; en général cela correspond à : "C:\Program Files\7-Zip\7z.exe".
- Le fichier SetISODate.vbs doit se trouver dans le même dossier que BackupFolder.cmd.
Programmer vos sauvegardes
Vous pouvez très bien programmer vos sauvegardes à l'aide des tâches planifiées de Windows. Pour Créer une tâche planifiée avec le fichier de commande BackupFolder.cmd et éditer la ligne de commande pour mettre vos paramètres.
Fichier: BackupFolder.cmd
@Echo OFF @Rem @Rem --------------------------------------------------- @Rem Name : BackupFolder.cmd @Rem Description : @Rem Encodage : DOS @Rem --------------------------------------------------- @Rem BackupFolder.cmd SFOLDER DFOLDER @Rem @Rem SFOLDER : Nom complet (chemin inclus) du dossier à sauvegarder @Rem DFOLDER : Nom complet (chemin inclus) du dossier où seront mis les sauvegardes. @Rem Set ISODATEVBS=%~pd0setISODate.vbs Set TMPISOCMD=%TEMP%\.tmpiso.cmd cscript //Nologo "%ISODATEVBS%" ISODATE>"%TMPISOCMD%" @CALL "%TMPISOCMD%" @Echo ISODATE=%ISODATE% Set SFOLDER=%~1 Set DFOLDER=%~2 Set ARCHIVE=%DFOLDER%\%ISODATE%.%~n1.7z Echo ARCHIVE=%ARCHIVE% @IF NOT DEFINED SFOLDER ( goto SYNTAX ) @IF NOT DEFINED DFOLDER ( goto SYNTAX ) @IF NOT EXIST "%SFOLDER%" ( Echo ERROR: SFOLDER not found : %SFOLDER% goto :eof ) @IF NOT EXIST "%DFOLDER%" ( Echo WARN: DFOLDER not found : %DFOLDER% MD "%DFOLDER%" ) @IF EXIST "%ARCHIVE%" ( Echo WARN: Archive already exist : %ARCHIVE% ) @Rem BackupFolder.cmd localtion - Set EXE=%~pd07z.exe @Rem default localtion - Set EXE=%ProgramFiles%\7-Zip\7z.exe "%EXE%" a -t7z "%ARCHIVE%" -r "%SFOLDER%\*" -mx=8 -mmt=on -bd -y @Echo EL=%ERRORLEVEL% goto :eof :SYNTAX @Echo Syntaxe: goto :eof
Fichier: setISODate.vbs
Set objArgs=Wscript.Arguments
If WScript.Arguments.Length >0 Then
varname=WScript.Arguments.Item(0)
Else
varname="ISODATE"
End If
aday=Right("0"+Cstr(day(date)),2)
amonth=Right("0"+Cstr(month(date)),2)
ayear=Right("000"+Cstr(year(date)),4)
aHour=Right("0"+CStr(hour(time)),2)
aMins=Right("0"+CStr(minute(time)),2)
iso=ayear+"-"+amonth+"-"+aday+"_"+aHour+"-"+aMins
WScript.echo( "Set "+varname+"="+iso )
[Edit] La partie en gras italique, permet de prendre en compte l'heure (à la minute près) pour le nom de l'archive.Pour finir ce billet et juste pour le fun, sous unix on fait quelque chose de semblable avec la commande suivante:
tar cvf - ${SFOLDER}| gzip > `date +"%Y-%m-%d"`.${SFOLDER}.tar.ZNo comment.
Super : merci beaucoup !
RépondreSupprimerJe viens d'utiliser avec succès les scripts que tu as écris.
J'aurais une question bonus : je souhaite créer plusieurs archives par jour pour une sauvegarde, et il faudrait donc que j'ajoute l'heure de la sauvegarde.
Je ne suis pas parvenu a modifier le code de "SetISODate.vbs" en conséquence... Peux tu me donner la solution ?
Je réponds à ma question précédente, car j'ai finalement trouvé tout seul comme un grand : voici le code permettant d'écrire en plus l'heure et les minutes :
RépondreSupprimerSet objArgs=Wscript.Arguments
If WScript.Arguments.Length >0 Then
varname=WScript.Arguments.Item(0)
Else
varname="ISODATE"
End If
aday=Right("0"+Cstr(day(date)),2)
amonth=Right("0"+Cstr(month(date)),2)
ayear=Right("000"+Cstr(year(date)),4)
ahour=Right("0"+Cstr(Hour(time)),2)
aminute=Right("0"+Cstr(Minute(time)),2)
iso=ayear+"-"+amonth+"-"+aday+"-"+ahour+"h"+aminute
WScript.echo( "Set "+varname+"="+iso )