Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Archivage (fichiers zip) | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Archivage (fichiers zip) Mer 30 Déc 2015 - 16:38 | |
| Une petite illustration des fonctions ARCHIVER_ADD et ARCHIVER_EXTRACT, pour archivage et restauration du contenu d'un répertoire sous forme compressée (zip): - Code:
-
' Archive.bas Zip/Unzip d'un répertoire dans un fichier ' La compression comprend le contenu du répertoire et tous ses sous-répertoires LABEL Quit,Chr,Chf,Maj,Vzi,Exec DIM a$,b$,d$,f$,r%,k% WIDTH 0,300: HEIGHT 0,280: FONT_NAME 0,"Arial": FONT_BOLD 0 COLOR 0,190,255,255: BORDER_SMALL 0: CAPTION 0,"- COMPRESSION / DÉCOMPRESSION -" CONTAINER_OPTION 10: WIDTH 10,280: HEIGHT 10,60: CAPTION 10,"Archivage" COLOR 10,255,255,164 OPTION 11: PARENT 11,10: TOP 11,15: LEFT 11,10 WIDTH 11,260: CAPTION 11,"Compresser (Répertoire -> Fichier Zip)" OPTION 12: PARENT 12,10: TOP 12,TOP(11)+20: LEFT 12,LEFT(11) WIDTH 12,260: CAPTION 12,"Décompresser (Fichier Zip -> Répertoire)" ALPHA 20: TOP 20,TOP(10)+HEIGHT(10): LEFT 20,5: CAPTION 20,"Répertoire de compression:" EDIT 21: TOP 21,TOP(20)+15: LEFT 21,0: WIDTH 21,WIDTH(0)-80 FONT_NAME 21,"Consolas": FONT_SIZE 21,9 BUTTON 22:TOP 22,TOP(21): WIDTH 22,55: LEFT 22,WIDTH(0)-75: CAPTION 22,"Parcourir" FONT_BOLD_OFF 22: FONT_ITALIC 22: ON_CLICK 22,Chr ALPHA 23: TOP 23,TOP(21)+25: LEFT 23,5: FONT_BOLD_OFF 23
ALPHA 30: TOP 30,TOP(20)+60: LEFT 30,LEFT(20): CAPTION 30,"Fichier ZIP:" EDIT 31: TOP 31,TOP(30)+15: LEFT 31,LEFT(21): WIDTH 31,WIDTH(21) FONT_NAME 31,"Consolas": FONT_SIZE 31,9 BUTTON 32: TOP 32,TOP(31): WIDTH 32,WIDTH(22): LEFT 32,LEFT(22): CAPTION 32,"Parcourir" FONT_BOLD_OFF 32: FONT_ITALIC 32: ON_CLICK 32,Chf BUTTON 35: TOP 35,TOP(31)+24: HEIGHT 35,18: LEFT 35,20: FONT_BOLD_OFF 35 CAPTION 35,"Voir contenu": HIDE 35: ON_CLICK 35,Vzi
ALPHA 40: TOP 40,TOP(30)+65: LEFT 40,0: COLOR 40,255,255,0: FONT_SIZE 40,9 FONT_COLOR 40,148,0,0 ON_CLICK 11,Maj: ON_CLICK 12,Maj: MARK_ON 11 BUTTON 45: TOP 45,TOP(40)-3: LEFT 45,WIDTH(0)-95: CAPTION 45,"Exécuter" ON_CLICK 45,Exec ALPHA 50: TOP 50,TOP(40)+20: LEFT 50,5 ALPHA 51: TOP 51,TOP(50)+16: LEFT 51,5: COLOR 51,255,255,0
BUTTON 55: TOP 55,TOP(40)+30: LEFT 55,LEFT(45): CAPTION 55,"Quitter": ON_CLICK 55,Quit
FORM 60: HIDE 60: HEIGHT 60,800: WIDTH 60,400: BORDER_SMALL 60 MEMO 61: PARENT 61,60: FULL_SPACE 61: BAR_BOTH 61: FONT_NAME 61,"Consolas"
END ' ============================================================================== Quit: TERMINATE ' ============================================================================== Chr: Choixrep() d$ = CLIPBOARD_STRING_PASTE$ TEXT 21,d$ EXECUTE_WAIT "Cmd.exe /c DIR /S "+d$+" | clip" a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"Total des fichiers") a$ = RIGHT_POS$(a$,k%+29) b$ = LTRIM$(LEFT$(a$,27))+", "+LTRIM$(MID$(a$,54,23))+", "+LTRIM$(MID$(a$,28,24)) CAPTION 23,b$ RETURN ' ============================================================================== Chf: Choixfich("*.zip","") f$ = CLIPBOARD_STRING_PASTE$ TEXT 31,f$ IF FILE_EXISTS(f$) = 1 THEN SHOW 35 RETURN ' ============================================================================== Maj: IF CHECKED(11) = 1 CAPTION 40," COMPRESSION : DOSSIER -> ZIP " CAPTION 20,"Répertoire de compression:" ELSE CAPTION 40," DÉCOMPRESSION : ZIP -> DOSSIER " CAPTION 20,"Répertoire de décompression:" END_IF RETURN ' ============================================================================== Vzi: IF FILE_EXISTS(f$) = 0 THEN MESSAGE "Fichier inexistant !": RETURN Vzip(f$) CAPTION 60,"Contenu de "+f$ CLEAR 61: CLIPBOARD_PASTE 61: SHOW 60 RETURN ' ============================================================================== Exec: d$ = TEXT$(21): IF RIGHT$(d$,1)<>"\" THEN d$ = d$+"\" f$ = TEXT$(31) IF CHECKED(11) = 1: ' compression IF DIR_EXISTS(d$) = 0 THEN MESSAGE "Répertoire inexistant !": RETURN CAPTION 50,"Compression lancée ...": WAIT 100 ARCHIVER_ON ARCHIVER_ADD d$,f$ SHOW 35 ELSE: ' décompression IF FILE_EXISTS(f$) = 0 THEN MESSAGE "Fichier zip inexistant !": RETURN IF DIR_EXISTS(d$) = 0 a$ = "Répertoire de destination inexistant, le créer ?" r% = MESSAGE_CONFIRMATION_YES_NO(a$) IF r% <> 1 THEN RETURN DIR_MAKE d$ ELSE EXECUTE_WAIT "Cmd.exe /c DIR /B "+d$+" | clip" a$ = CLIPBOARD_STRING_PASTE$ IF a$ <> "" a$ = "Répertoire de destination non vide,"+CHR$(10) a$ = a$+" supprimer entièrement le contenu ?" r% = MESSAGE_CONFIRMATION_YES_NO(a$) IF r% = 1 ' Suppression du répertoire et de son contenu EXECUTE_WAIT "Cmd.exe /c RD /S /Q "+d$ DIR_MAKE d$: ' nouvelle création END_IF END_IF END_IF CAPTION 50,"Décompression lancée ...": WAIT 100 ARCHIVER_ON ARCHIVER_EXTRACT f$,d$ END_IF ARCHIVER_OFF CAPTION 51," Terminé ! " RETURN ' ============================================================================== SUB Choixrep() ' Choix d'un répertoire, résultat dans le Clipboard (ou "") ' (choisir un fichier quelconque du répertoire voulu, puis 'Ouvrir') DIM_LOCAL rs$, odl%, fchh$: odl% = 495 WHILE OBJECT_EXISTS(odl%) = 1: odl% = odl%+1: END_WHILE OPEN_DIALOG odl%: DIR_DIALOG odl%,"C:\" fchh$ = FILE_NAME$(odl%) DELETE odl% IF fchh$ = "" OR LEN(fchh$) < 5 THEN fchh$ = "" CLIPBOARD_STRING_COPY FILE_EXTRACT_PATH$(fchh$) END_SUB ' ============================================================================== SUB Choixfich(filtre$,rd$) ' Choix d'un fichier, résultat dans le Clipboard (ou "") ' Filtre éventuel, de la forme "*.ext" ' rd$ = répertoire de démarrage, ou "": C:\ DIM_LOCAL odl%, fchh$: odl% = 495 WHILE OBJECT_EXISTS(odl%) = 1: odl% = odl%+1: END_WHILE OPEN_DIALOG odl% DIR_DIALOG odl%,"C:\": IF rd$<>"" THEN DIR_DIALOG odl%,rd$ IF filtre$ <> "" IF LEFT$(filtre$,2) <>"*." THEN filtre$ = "*."+filtre$ FILTER odl%,"Fichiers "+UPPER$(RIGHT$(filtre$,3))+"|"+filtre$ END_IF fchh$ = FILE_NAME$(odl%) DELETE odl% IF fchh$ = "" OR LEN(fchh$) < 5 THEN fchh$ = "" CLIPBOARD_STRING_COPY fchh$ END_SUB ' ============================================================================== SUB Vzip(zip$) ' Liste des fichiers contenus dans le fichier compressé zip$. ' Avec leur taille réelle, leur dernière date de modification et leur nom. ' Le résultat est rendu dans le clipboard (exemple CLIPBOARD_PASTE dans un Memo) DIM_LOCAL a$,v%(100),i%,sz%,dt%,hr%,tc%,tr%,ln%,le%,h%,m%,nom$,po%,aa%,mm%,jj% FILEBIN_OPEN_READ 9,zip$: sz% = FILEBIN_SIZE(9) a$ = "": po% = 0 WHILE po%<sz% ' séquence début du header de chaque fichier (en hexa): 50 4B 03 04 FILEBIN_POSITION 9,po% FILEBIN_BLOCK_READ 9,100,v%(0): IF v%(2) <> 3 THEN EXIT_WHILE: ' c'est la fin hr% = v%(10)+256*v%(11): ' heure fichier (2 octets) dt% = v%(12)+256*v%(13): ' date fichier (2 octets) aa% = 1980+BIN_AND(dt%,HEX("FE00"))/512: ' année (depuis 1980) mm% = BIN_AND(dt%,HEX("1E0"))/32: ' mois jj% = BIN_AND(dt%,31): ' jour h% = BIN_AND(hr%,HEX("F800"))/2048: ' heure m% = BIN_AND(hr%,HEX("7E0"))/32: ' minutes tc% = v%(18)+256*v%(19)+65536*v%(20)+16777216*v%(21): ' taille compactée tr% = v%(22)+256*v%(23)+65536*v%(24)+16777216*v%(25): ' taille réelle ln% = v%(26)+256*v%(27): ' longueur du nom le% = v%(28)+256*v%(29): ' longueur extra field nom$ = "": FOR i% = 0 TO ln%-1: nom$=nom$+CHR$(v%(30+i%)): NEXT i% a$ = a$ + RIGHT$(" "+STR$(tr%),9)+" " a$ = a$ + RIGHT$("0"+STR$(jj%),2)+"/"+RIGHT$("0"+STR$(mm%),2) a$ = a$ + "/"+STR$(aa%)+" "+RIGHT$("0"+STR$(h%),2) a$ = a$ + ":"+RIGHT$("0"+STR$(m%),2)+" " + nom$ + CHR$(13)+CHR$(10) po% = po%+30+ln%+le%+tc%: ' positionnement sur le fichier suivant END_WHILE FILEBIN_CLOSE 9 CLIPBOARD_STRING_COPY LEFT$(a$, LEN(a$)-2) END_SUB ' ==============================================================================
Noter que la compression inclut le contenu du répertoire donné et de tous ses sous-répertoires. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Archivage (fichiers zip) Mar 5 Jan 2016 - 22:03 | |
| Et voici sous une forme un peu plus élaborée, un programme de sauvegarde/restauration de répertoires, dont je me sers pour: - faire des sauvegardes périodiques sur un disque dur externe. - synchroniser un ordinateur portable avec l'ordinateur de bureau, en passant par une clé usb par exemple. Il suffit d'établir une liste des répertoires à sauvegarder en totalité (répertoires sous la racine du disque dur ou secondaires, il suffit d'indiquer leur chemin par rapport à C:\). Il y a donc deux fonctions: sauvegarde de sécurité ou synchro, et restauration (en principe seulement sur un pc auxiliaire: synchronisation). - Code:
-
' Sauvrest.bas: sauvegarde/restore de répertoires sous forme zip
LABEL Quit,Vol,Chvol,Maj,Exec,Sauve,Restor,Edlist DIM flist$,fsauv$,ftmp$,rtr$,fs$,fl$,i%,k%,nr%,tf,tr,to,a$,b$,rs$,db$,vsys$,vol$ vsys$ = "C:\" rtr$ = vsys$+"SAUVE\" flist$ = rtr$+"Sauvlist.txt": ' liste des répertoires à sauvegarder fsauv$ = rtr$+"Sauvrest.exe": ' ce programme compilé IF DIR_EXISTS(vsys$+"SAUVE\")=0 THEN DIR_MAKE vsys$+"SAUVE\"
WIDTH 0,300: HEIGHT 0,640 FONT_NAME 0,"Arial": FONT_BOLD 0: BORDER_SMALL 0: CAPTION 0,"SAUVEGARDE / RESTORE" COLOR 0,190,255,255 CONTAINER 10: WIDTH 10,WIDTH(0)-25: HEIGHT 10,120: CAPTION 10,"Volumes montés :" LIST 11: PARENT 11,10: FULL_SPACE 11: HEIGHT 11,HEIGHT(10)-40 COLOR 11,200,255,200: ON_CLICK 11,Chvol BUTTON 12: PARENT 12,10: HEIGHT 12,18: TOP 12,HEIGHT(10)-20: LEFT 12,WIDTH(10)/2-40 CAPTION 12,"Actualiser": ON_CLICK 12,Vol CONTAINER_OPTION 20: TOP 20,TOP(10)+HEIGHT(10): WIDTH 20,WIDTH(10): HEIGHT 20,40 COLOR 20,255,255,164 OPTION 21: PARENT 21,20: TOP 21,15: LEFT 21,20: CAPTION 21,"Sauvegarde" OPTION 22: PARENT 22,20: TOP 22,TOP(21): LEFT 22,130: CAPTION 22,"Restore" MARK_ON 21: ON_CLICK 21,Maj: ON_CLICK 22,Maj ALPHA 30: TOP 30,TOP(20)+HEIGHT(20)+5: LEFT 30,5: CAPTION 30,"Répertoire de sauvegarde:" EDIT 31: TOP 31,TOP(30)+15: LEFT 31,5: WIDTH 31,WIDTH(20)-10: FONT_SIZE 31,10 ALPHA 32: TOP 32,TOP(30)+40: LEFT 32,5: CAPTION 32,"Liste des répertoires:" EDIT 33: TOP 33,TOP(32)+15: LEFT 33,5: WIDTH 33,WIDTH(31)-40: FONT_SIZE 33,10 BUTTON 34: TOP 34,TOP(33): WIDTH 34,45: LEFT 34,WIDTH(0)-70: CAPTION 34,"Edit" ON_CLICK 34,Edlist
ALPHA 38: TOP 38,TOP(33)+30: LEFT 38,40 CAPTION 38,"Répertoires sauvegardés :"+CHR$(10)+STRING$(26," ")+"Fich. Rép. octets" LIST 39: TOP 39,TOP(38)+30: LEFT 39,5: WIDTH 39,20: HEIGHT 39,240 LIST 40:TOP 40,TOP(39): LEFT 40,25: HEIGHT 40,HEIGHT(39): WIDTH 40,80 LIST 41: TOP 41,TOP(40): LEFT 41,LEFT(40)+WIDTH(40): HEIGHT 41,HEIGHT(40): WIDTH 41,45 LIST 42: TOP 42,TOP(40): LEFT 42,LEFT(41)+WIDTH(41): HEIGHT 42,HEIGHT(40): WIDTH 42,40 LIST 43: TOP 43,TOP(40): LEFT 43,LEFT(42)+WIDTH(42): HEIGHT 43,HEIGHT(40): WIDTH 43,85 ALPHA 44: TOP 44,TOP(40)+HEIGHT(40): LEFT 44,LEFT(41) FOR k% = 39 TO 44: FONT_NAME k%,"Consolas": NEXT k% ALPHA 45: TOP 45,TOP(40)+HEIGHT(40)+10: LEFT 45,0: COLOR 45,255,255,0 ALPHA 46: TOP 46,TOP(45)+16: LEFT 46,LEFT(45): COLOR 46,255,255,0 BUTTON 50: TOP 50,TOP(45)+3: LEFT 50,WIDTH(0)-100: CAPTION 50,"Lancer" ON_CLICK 50,Exec ALPHA 51: TOP 51,TOP(46)+25: LEFT 51,5: COLOR 51,255,255,0 BUTTON 52: TOP 52,TOP(50)+35: LEFT 52,LEFT(50): CAPTION 52,"Quitter" ON_CLICK 52,Quit
MEMO 60: HIDE 60 IF FILE_EXISTS(flist$) = 0 FILE_OPEN_WRITE 1, flist$ FILE_WRITELN 1,"* ***** FICHIER DES SAUVEGARDES *****" FILE_WRITELN 1,"* Liste des répertoires à sauvegarder sous C:\" FILE_WRITELN 1,"* (la sauvegarde comprend le répertoire indiqué et tous ses sous-répertoires)" FILE_WRITELN 1,"* - les lignes vides ou commençant par '*' sont ignorées." FILE_WRITELN 1,"* La sauvegarde se fait sous la forme de fichiers compressés .zip (un fichier par" FILE_WRITELN 1,"* répertoire)." FILE_WRITELN 1,"*********************************************************************************" FILE_CLOSE 1 END_IF GOSUB Vol END ' ============================================================================== Quit: TERMINATE ' ============================================================================== Vol: ' Liste des volumes connectés CLEAR 11 Volumes() k% = INSTR(volu$,";") WHILE k%>0 ITEM_ADD 11,LEFT$(volu$,k%-1): volu$=RIGHT_POS$(volu$,k%+1) k% = INSTR(volu$,";") END_WHILE ITEM_ADD 11,volu$ GOSUB Maj RETURN ' ============================================================================== Chvol: ' Choix du volume de sauvegarde vol$ = ITEM_INDEX$(11) rs$ = LEFT$(vol$,2)+"\SAUVE\" TEXT 31,rs$ GOSUB Maj RETURN ' ============================================================================== Maj: ' Actualisation des volumes connectés CLEAR 40: CLEAR 41: CLEAR 42: CLEAR 43 IF CHECKED(21) = 1 ' Sauvegarde CAPTION 45,"Sauvegarde des répertoires" CAPTION 46,"Depuis: "+ vsys$+" Vers: "+rs$ TEXT 33,flist$ tf = 0: tr = 0: to = 0: nr% = 0 FILE_OPEN_READ 1,flist$ WHILE FILE_EOF(1) = 0 FILE_READLN 1,a$ IF TRIM$(a$)<>"" AND LEFT$(a$,1)<>"*" ITEM_ADD 40,a$: nr% = nr%+1 Dirinfos(vsys$+a$): a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,";") b$ = LEFT$(a$,k%-1): ITEM_ADD 41,RIGHT$(" "+b$,6): tf=tf+VAL(b$) a$ = RIGHT_POS$(a$,k%+1): k% = INSTR(a$,";") b$ = LEFT$(a$,k%-1): tr = tr+VAL(b$) ITEM_ADD 42,RIGHT$(" "+b$,5): b$ = RIGHT_POS$(a$,k%+1) ITEM_ADD 43,RIGHT$(" "+b$,12): to = to+VAL(b$) END_IF END_WHILE FILE_CLOSE 1 FOR k% = 40 TO 43: ITEM_ADD k%,"": NEXT k% ITEM_ADD 40," Total =" ITEM_ADD 41,RIGHT$(" "+STR$(tf),6) ITEM_ADD 42,RIGHT$(" "+STR$(tr),5) ITEM_ADD 43,RIGHT$(" "+STR$(to),12) ELSE ' Restore IF vol$ = "" a$ = "Monter et sélectionner le volume contenant la sauvegarde !" MsgOK(0,TOP(40)+50,a$): RETURN END_IF CAPTION 45,"Restore des répertoires" CAPTION 46,"Depuis: "+ rs$+" Vers: "+vsys$ EXECUTE_WAIT "Cmd.exe /c DIR /B "+rs$+"*.zip | clip" CLEAR 60: CLIPBOARD_PASTE 60 FOR k% = 1 TO COUNT(60): ITEM_ADD 40,ITEM_READ$(60,k%): NEXT k% nr% = COUNT(60) END_IF RETURN ' ============================================================================== Exec: IF CHECKED(21) = 1 GOSUB Sauve ELSE GOSUB Restor END_IF RETURN ' ============================================================================== Sauve: ' Sauvegarde des répertoires de la liste sous la forme d'un fichier zip du nom du ' répertoire par élément de la liste.. Si le nom du répertoire comporte des "\", ' ils seront remplacé par des "+" dans le nom du fichier zip. IF rs$ = "" a$ = "Cliquer le volume de sauvegarde !" MsgOK(0,TOP(40)+50,a$): RETURN END_IF IF FILE_EXISTS(flist$)=0 a$ = "Liste de sauvegardes non trouvée !" MsgOK(0,TOP(40)+50,a$): RETURN END_IF IF DIR_EXISTS(rs$) = 0 THEN DIR_MAKE rs$ EXECUTE_WAIT "Cmd.exe /c COPY /Y "+flist$+" "+rs$ IF FILE_EXISTS(fsauv$)=1 THEN EXECUTE_WAIT "Cmd.exe /c COPY /Y "+fsauv$+" "+rs$ db$ = TIME$: CAPTION 51,"Début: "+db$ ARCHIVER_ON CLEAR 39 FOR k% = 1 TO nr% a$ = ITEM_READ$(40,k%): ITEM_ADD 39,"X": display b$ = a$: ' répertoire à sauvegarder FOR i% = 1 TO LEN(b$) IF MID$(b$,i%,1)="\" THEN b$ = LEFT$(b$,i%-1)+"+"+RIGHT_POS$(b$,i%+1) NEXT i% fs$ = rs$+b$+".zip": ' fichier zip ARCHIVER_ADD vsys$+a$,fs$ NEXT k% ARCHIVER_OFF a$ = "Sauvegarde: "+DATE$+" - Début: "+db$+" Fin: "+TIME$+" sur "+rs$+" "+vol$ fl$ = rs$+"Log.txt": IF FILE_EXISTS(fl$)=0 THEN FILE_OPEN_WRITE 1,fl$: FILE_CLOSE 1 FILE_OPEN_APPEND 1,fl$: FILE_WRITELN 1,a$: FILE_CLOSE 1 fl$ = rtr$+"Log.txt": IF FILE_EXISTS(fl$)=0 THEN FILE_OPEN_WRITE 1,fl$: FILE_CLOSE 1 FILE_OPEN_APPEND 1,fl$: FILE_WRITELN 1,a$: FILE_CLOSE 1 CAPTION 51,CAPTION$(51)+" Fin: "+TIME$ RETURN ' ============================================================================== Restor: ' Restauration des répertoires à partir de la liste contenue dans la sauvegarde. ' (un fichier zip par répertoire sauvegardé). Si le nom du fichier zip comporte ' des "+", ils seront remplacés par des "\" pour établir le chemin du répertoire ' correspondant. IF DIR_EXISTS(rs$) = 0 a$ = "Répertoire de sauvegarde non trouvé !" MsgOK(0,TOP(40)+50,a$): RETURN END_IF IF FILE_EXISTS(flist$)=0 EXECUTE_WAIT "Cmd.exe /c COPY "+rs$+"Sauvlist.txt "+flist$ END_IF db$ = TIME$: CAPTION 51,"Début: "+db$ ARCHIVER_ON CLEAR 39 FOR k% = 1 TO nr% a$ = ITEM_READ$(40,k%): ITEM_ADD 39,"X": display b$ = a$: ' fichier zip FOR i% = 1 TO LEN(b$) IF MID$(b$,i%,1)="+" THEN b$ = LEFT$(b$,i%-1)+"\"+RIGHT_POS$(b$,i%+1) NEXT i% fs$ = rs$+a$: ' fichier zip a$ = vsys$+LEFT$(b$,LEN(b$)-4): ' répertoire de restore IF DIR_EXISTS(a$) = 0 THEN DIR_MAKE a$ ARCHIVER_EXTRACT fs$,a$ NEXT k% ARCHIVER_OFF a$ = "Restore: "+DATE$+" - Début: "+db$+" Fin: "+TIME$+" sur "+rs$+" "+vol$ fl$ = rs$+"Log.txt": IF FILE_EXISTS(fl$)=0 THEN FILE_OPEN_WRITE 1,fl$: FILE_CLOSE 1 FILE_OPEN_APPEND 1,fl$: FILE_WRITELN 1,a$: FILE_CLOSE 1 IF DIR_EXISTS(rtr$) = 0 THEN DIR_MAKE rtr$ fl$ = rtr$+"Log.txt": IF FILE_EXISTS(fl$)=0 THEN FILE_OPEN_WRITE 1,fl$: FILE_CLOSE 1 FILE_OPEN_APPEND 1,fl$: FILE_WRITELN 1,a$: FILE_CLOSE 1 FILE_OPEN_APPEND 1,fl$: FILE_WRITELN 1,a$: FILE_CLOSE 1 CAPTION 51,CAPTION$(51)+" Fin: "+TIME$ RETURN ' ============================================================================== Edlist: ' Editer la liste des sauvegardes EXECUTE_WAIT "Notepad.exe "+flist$ RETURN ' ============================================================================== SUB Volumes() ' Liste des volumes montés, avec leur nom, séparés par ';' -> volu$ DIM_LOCAL scr$, fv$, a$, q$ IF VARIABLE("volu$") = 0 THEN DIM volu$ scr$ = rtr$+"Vol.vbs": ' script exécutable créé fv$ = rtr$+"Volumes.txt" q$ = CHR$(34) FILE_OPEN_WRITE 1, scr$ FILE_WRITELN 1,"Dim net, shell, computer, fso, WMISet,oWinnt" FILE_WRITELN 1,"Dim fst, fichier" FILE_WRITELN 1,"Set fst = CreateObject("+q$+"Scripting.FileSystemObject"+q$+")" FILE_WRITELN 1,"Set fichier = fst.CreateTextFile("+q$+fv$+q$+")" FILE_WRITELN 1,"Set net = Wscript.CreateObject("+q$+"WScript.Network"+q$+")" FILE_WRITELN 1,"Set shell = WScript.CreateObject("+q$+"WScript.Shell"+q$+")" FILE_WRITELN 1,"Set fso = WScript.CreateObject("+q$+"Scripting.FileSystemObject"+q$+")" FILE_WRITELN 1,"computer = net.ComputerName" FILE_WRITELN 1,"set WMISet = GetObject("+q$+"winmgmts:{impersonationLevel=impersonate}!//"+q$+" & Computer).ExecQuery _" FILE_WRITELN 1,"("+q$+"SELECT * FROM Win32_LogicalDisk"+q$+")" FILE_WRITELN 1,"Message = "+q$+""+q$+" " FILE_WRITELN 1,"For each Disk in WMISet" FILE_WRITELN 1," Capa = Disk.Size" FILE_WRITELN 1," If Capa <> "+q$+""+q$+" Then" FILE_WRITELN 1," Name = Disk.VolumeName" FILE_WRITELN 1," If Message <> "+q$+""+q$+" Then Message = Message & VBCRLF" FILE_WRITELN 1," Message = Message & Disk.Name & "+q$+" "+q$+" & Name" FILE_WRITELN 1," End if" FILE_WRITELN 1,"Next" FILE_WRITELN 1,"fichier.WriteLine (Message)" FILE_WRITELN 1,"fichier.Close" FILE_WRITELN 1,"wscript.quit" FILE_CLOSE 1 EXECUTE_WAIT "Wscript.exe " + scr$ FILE_OPEN_READ 9,fv$: volu$ = "" WHILE FILE_EOF(9) = 0: FILE_READLN 9, a$: volu$=volu$+a$+";": END_WHILE FILE_CLOSE 9: FILE_DELETE fv$ volu$ = LEFT$(volu$,LEN(volu$)-1) END_SUB ' ============================================================================== SUB Dirinfos(rep$) ' Infos sur un répertoire (mode sans fenêtre noire) -> clipboard sous la forme: ' [nb fichiers];[nb de sous-répertoires];[volume total (octets)] DIM_LOCAL a$,nf%,nr%,no%,pr$,vb$,q$: vb$ = rtr$+"Vb.vbs": q$ = CHR$(34) MEMO 975: HIDE 975: WIDTH 975,600 pr$ = "Cmd.exe /c DIR /S /-C "+rep$+" | clip" FILE_OPEN_WRITE 9, vb$: ' ===== Création du script .vbs ===== FILE_WRITELN 9,"CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+pr$+q$+",0,True" FILE_CLOSE 9 EXECUTE_WAIT "WSCRIPT.exe "+vb$: ' ===== Exécution du script ===== FILE_DELETE vb$ CLIPBOARD_PASTE 975 a$ = ITEM_READ$(975,COUNT(975)-1) nf% = VAL(LTRIM$(LEFT$(a$,16))): no% = VAL(LTRIM$(MID$(a$,28,17))) a$ = ITEM_READ$(975,COUNT(975)) nr% = VAL(LTRIM$(LEFT$(a$,16))) CLIPBOARD_STRING_COPY STR$(nf%)+";"+STR$(nr%)+";"+STR$(no%) DELETE 975 END_SUB ' ============================================================================== SUB MsgOK(x%,y%,tx$) ' Message box tx$ et 'OK' affiché en x%,y% IF LABEL("Qtmsg") = 0 THEN LABEL Qtmsg DIM_LOCAL qt% FORM 900: TOP 900,y%: LEFT 900,x%: WIDTH 900,200: HEIGHT 900,110: BORDER_SMALL 900 COLOR 900,255,180,180: ON_CLOSE 900,Qtmsg ALPHA 901: PARENT 901,900: TOP 901,15: LEFT 901,20: FONT_SIZE 901,9 WIDTH 900,TEXT_WIDTH(tx$,901)+60: CAPTION 901,tx$ BUTTON 902: PARENT 902,900: TOP 902,HEIGHT(900)-65: LEFT 902,WIDTH(900)/2-40 CAPTION 902,"OK": ON_CLICK 902,Qtmsg WHILE qt% = 0: PAUSE 200: END_WHILE: DELETE 900: EXIT_SUB Qtmsg: qt% = 1 RETURN END_SUB ' ==============================================================================
L'avantage du stockage au format .zip est de nécessiter un volume moins important pour les sauvegardes. L'inconvénient est la durée plus importante du temps de traitement (compression et décompression). Usage: NB tous les fichiers de travail sont créés dans le répertoire C:\SAUVE\ La rubrique 'Répertoire de sauvegarde' désigne le répertoire qui contiendra l'ensemble des fichiers zip de la sauvegarde dans le volume choisi: X:\SAUVE\ Si le fichier liste des sauvegardes n'existe pas, il sera créé, vide, il faudra le garnir (bouton Edit) Chaque ligne correspond à un répertoire à sauvegarder, exemple: OUTILS, PANORAMIC, TEXTES, COMPTES\CCP, etc. (chemin du répertoire à partir de C:) 1) Sauvegarde: cliquer le volume de sauvegarde (clé ou disque externe), puis 'Lancer' Les sauvegardes s'effectuent sous forme d'un fichier .zip par répertoire sauvegardé, du nom du répertoire, dans un répertoire SAUVE sous la racine du volume de sauvegarde. Exemple: OUTILS sera dans C:\SAUVE\OUTILS.zip, COMPTES\CCP dans C:\SAUVE\COMPTES+CCP.zip (\ converti en +) 2) Restore: Il faut choisir dans la fenêtre supérieure le volume de sauvegarde, s'il contient bien une sauvegarde la liste des fichiers zip incluse s'affiche. Exécution: bouton 'Lancer' Les opérations sont archivées dans un fichier Log.txt NB: l'opération de sauvegarde est sans risque. Par contre l'opération de restauration doit évidemment se faire avec prudence, là on écrase l'existant avec ce qui a été sauvegardé, il vaut mieux ne pas se tromper ! Mise à jour 06/01 14h40
Dernière édition par JL35 le Mer 6 Jan 2016 - 14:39, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Archivage (fichiers zip) Mer 6 Jan 2016 - 0:18 | |
| C'est en effet une opération qu'il est prudent de faire régulièrement. Je devrais le faire pour le bien ... mais mes disques de sauvegarde sont toujours pleins pour de mauvaises raisons ... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Archivage (fichiers zip) Mer 6 Jan 2016 - 14:50 | |
| En effet, et on ne s'en rend vraiment compte qu'après l'accident, j'ai connu ça fin décembre avec des surtensions à répétitions de la part d'Edf, en pleine nuit, le pc portable de mon épouse y a rendu l'âme, le mien a survécu (y compris la box), grâce je pense à sa prise parafoudre... la moitié ou les trois quarts du matériel électronique de la maison est inutilisable et a été remplacé (chaudière, micro-ondes, téléphones sans fil, décodeurs tnt, automatisme garage, etc. etc.). Tout ça sur une trentaine de maisons. Une panne (court-circuit avec le 380 V ?) sur le réseau souterrain. | |
| | | Contenu sponsorisé
| Sujet: Re: Archivage (fichiers zip) | |
| |
| | | | Archivage (fichiers zip) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |