Page 1 sur 1
[Ex] Script de sauvegarde sur un disque externe
Posté : ven. 07 août 2009 11:14
par GhostLine
Salutations,
Voici donc un petit script, vite écrit et vite posté (mais optimisable, je m'en occupe ^^).
Comme vous pourrez le lire, ce script cherche un support avec un nom particulier (dans notre cas "Iomega HDD"), va récupérer une liste de répertoires déclarés dans un fichier INI sur ce support, puis fait le backup de tout ce petit monde.
► Afficher le texte
Code : Tout sélectionner
; *************************************************************
; * SAUVEGARDE FICHIERS - ECRIT PAR GHOST LINE - 2009 *
; *************************************************************
#Include <Array.au3>
#Include <File.au3>
$repertoire_outlook = @UserProfileDir&"\Local Settings\Application Data\Microsoft\Outlook\"
$repertoire_utilisateur = @MyDocumentsDir
Dim $array_chemin[15]
$z = 0
$i = 0
$nombre_rep = 0
; Récuperation des informations contenues dans le fichier sauvegarde.ini
$fichier_ini = FileOpen(StringLeft(@ScriptDir,2)&"\sauvegarde.ini",0)
While 1
$ligne = FileReadLine($fichier_ini)
If @error = -1 Then ExitLoop
If StringLeft($ligne,3) = "ras" Then
$nombre_rep = $nombre_rep + 1
$chemin = StringRight($ligne,(StringLen($ligne)-4))
$z=$z+1
$array_chemin[$z] = $chemin
EndIf
If StringLeft($ligne,4) = "hdds" Then
$nom_disque = StringRight($ligne,(StringLen($ligne)-5))
EndIf
Wend
FileClose(StringLeft(@ScriptDir,2)&"\sauvegarde.ini")
; Récuperation de la lettre de lecteur du disque de sauvegarde
$nombre_disques = DriveGetDrive( "all" )
For $i = 1 to $nombre_disques[0]
$var = DriveGetLabel($nombre_disques[$i])
If $var = $nom_disque Then
$repertoire_destination = $nombre_disques[$i]
EndIf
Next
; Sauvegarde par défaut de "Mes Documents"
DirCopy ($repertoire_utilisateur,$repertoire_destination&"\Mes Documents\",1)
; Sauvegarde par défaut du repertoire de sauvegarde de Outlook
DirCopy ($repertoire_outlook,$repertoire_destination&"\Backup Outlook\",1)
; Sauvegarde des repertoires contenus dans le fichier sauvegarde.ini
For $i = 1 To $nombre_rep
$chemin = $array_chemin[$i]
DirCopy($chemin,$repertoire_destination&StringTrimLeft($chemin,2),1)
Next
Des améliorations à faire en particulier au niveau de la déclaration de la tables des répertoires (un peu goret comme méthode ^^'), ainsi que, pourquoi pas, la déclaration du nom du support en dur dans le fichier INI (mais est-il possible de connaitre le disque à partir duquel s'exécute le script que l'on lance ?)
Edition : première correction
Et voici le fichier sauvegarde.ini (sans trop de surprises je pense ^^) :
► Afficher le texte
Code : Tout sélectionner
#####################################################################################
# Ce fichier contient une liste de paramètres concernant le programme de sauvegarde #
# N'hésitez pas à le compléter et à le renseigner. Si vous avez un doute quant à #
# son utilisation, contactez votre administrateur. #
# #
# Par défaut, le répertoire "Mes Documents" de l'utilisateur connecté, ainsi que #
# son profil Outlook, sont sauvegardés. #
#####################################################################################
# Nom du disque de sauvegarde #
hdds=Iomega HDD
# repertoires à sauvegarder - dans la limite de 14 repertoires #
ras=c:\temp
ras=c:\recherche
Edit 2 : du coup, je viens de m'apercevoir que DirCopy n'accepte pas les noms de répertoires avec des espaces ... toujours bon à savoir.
Re: [Ex] Script de sauvegarde sur un disque externe
Posté : ven. 07 août 2009 12:02
par Iste
GhostLine a écrit :mais est-il possible de connaitre le disque à partir duquel s'exécute le script que l'on lance ?
Béh, uai, StringLeft(@ScriptDir,3) et hop, t'as la lettre, et a partir de la heu, ben t'as le nom si tu veux
Re: [Ex] Script de sauvegarde sur un disque externe
Posté : ven. 07 août 2009 12:35
par GhostLine
Suis-je bête ^^' bon, blague à part, je ne connaissais pas @ScriptDir

Re: [Ex] Script de sauvegarde sur un disque externe
Posté : dim. 27 déc. 2009 16:45
par EnvyMe
Bonsoir,
Premierement, Joyeux Noël a tous.
Deuxiement, Comment pourrais-je modifier ce script afin qu'il copie tous les dossiers du profil utilisateurs ?!
tous les dossiers par défaut sous Windows Vista/7 (contacts, my documents, favorites, my videos,... ) ainsi que tous les dossiers perso.
j'ai essayé cette commande, sans résultats :
DirCopy(@UserProfileDir,$repertoire_destination & "\Mes Documents\",1)
Merci d'avance pour votre aide
Re: [Ex] Script de sauvegarde sur un disque externe
Posté : mar. 16 févr. 2010 11:03
par GhostLine
1/ je ne crois pas que tu aies les droits de copier un autre répertoire de profil utilisateur que celui avec lequel tu te connectes dans Windows, à moins d'être administrateur.
2/ une fois admin, le plus simple est de recopier directement le répertoire c:\Documents and Settings\ sur ton support.