VBWINBACKUP : SAUVEGARDE D'UNE ARBORESCENCE DE FICHIERS

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 19 mars 2006 à 10:57
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018 - 23 juin 2009 à 08:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36613-vbwinbackup-sauvegarde-d-une-arborescence-de-fichiers

cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 juin 2009 à 08:38
Précision : si vous supprimez hf_mig et que vous installez un service pack contenant des versions plus anciennes des dll Windows, alors ce service pack sera effectivement installé (et vous devrez refaire un Windows Update pour récupérer les dernières version), tandis que si vous conservez votre hf_mig, alors vous n'aurez pas ce petit problème.
Conclusion : ce n'est pas un problème grave d'ignorer ce dossier dans un Backup, dans tous les cas il suffit de réappliquer un Windows Update après une réinstallation d'un vieux package (ce qui est d'ailleurs rare).
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 juin 2009 à 12:43
Attention : en fait il ne faut pas supprimer le dossier $hf_mig$
Voir ici :
www.bellamyjc.org/fr/windowsxp2003.html#hf_mig
http://support.microsoft.com/default.aspx/kb/824994

Il va falloir que je fasse une modif. prochainement.

Soluce pour déplacer (physiquement mais pas logiquement) ce dossier en cas de manque de place via les "JONCTIONS" :
www.generation-nt.com/info-a-propos-du-dossier-hf-mig-comment-le-deplacer-entraide-197170.html
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 oct. 2008 à 10:57
Nouvelle Version : 1.04 : Passage en VB2008.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
16 déc. 2007 à 12:24
Nouvelle Version : 1.03 : Passage en DotNet2.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
4 avril 2007 à 08:43
Avec VB 2005 oui : ULong pour Unsigned Long, mais je crois que les unsigned n'existent pas en VB 2003. Par exemple avec un UInt, on peut relire dans un fichier des Int32 écris en langage C dans un fichier binaire, cela fonctionne.
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
3 avril 2007 à 16:14
Je n'ai pas regarder le code, mais sous VB, est il possible d'avoir des entiers 64 Bit NON signé ?
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
27 févr. 2007 à 14:02
Autre solution possible pour les zip en DotNet : utiliser la librairie du J# (mais il n'est pas sûr qu'elle soit incluse dans le DotNet standard, à voir) :
www.codeproject.com/useritems/cpzipstrip2.asp
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 nov. 2006 à 11:44
ça y est, la limite des 2Go est franchie ! VBWinBackup est maintenant vraiment utile, on peut faire une copie de sauvegarde d'un Windows avec beaucoup de logiciels installés, un vrai Windows quoi !
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
25 sept. 2006 à 10:06
' Restaurer la date d'un fichier décompressé :
Dim fi As New FileInfo(sCheminFichier)
fi.LastWriteTime = MyZipEntry.DateTime
fi = Nothing
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
11 mai 2006 à 23:11
Arf ... PKZIP ! (moi ca me rapelle Paradox 3.5 ...)

Afyn

Navedac
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
10 mai 2006 à 11:08
7Zip : pas mal ! il compresse presque 2 fois mieux que SharpZipLib (1.8 x), pourtant en compression max., et il gagne même 9% en compressant un zip déjà fait !
Je n'avais pas vu une telle performance depuis PKZip en 1993.
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
9 mai 2006 à 17:45
d'accord merci :D
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
9 mai 2006 à 08:23
STFou : La fonction de départ est bZipperArboDebut
http://patrice.dargenton.free.fr/CodesSources/VBWinBackup.vbproj.html#315

Elle appelle bZipperArbo à la racine du zip :
If Not bZipperArbo(Me.m_sCheminRacineZip) Then Exit Function

7-zip.org : je vais y jeter un oeil, merci.
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
8 mai 2006 à 20:14
Pour votre info, il y a deux logiciels dont je me sers régulièrement depuis 2 ou 3 ans maintenant qui pourraient faire l'affaire... je me sers de fichiers ".BAT" (Batch) qui lancent la commande (aussi complexe que je le désire) via un appel du SHELL de VB. C'est peut-être pas la meilleure méthode, mais elle est effiace et fonctionne!

7-zip.org (gratuit, soit en mode Shell ou interface Windows et l'auteur est super sympa si on a des questions/problèmes)
PACOMP (http://www.powerarchiver.com/ - la license coûte 6 ou 7 Euros) - supporte aussi 7-zip
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
8 mai 2006 à 20:06
En gros, c'est quoi LA fonction qui converti UN dossier en zip ?
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
27 mars 2006 à 16:10
Il suffit d'utiliser des Long (de VB7) au lieu des Integer (les Long de VB6 ne peuvent effectivement pas stocker plus de 2 Go, dans ce cas il faut prendre un currency), et je dirais même plus : VBWinBackup est prêt à créer des zip > 4 Go... dès que la version 0.85 de la librairie officiellement recommandée par Microsoft pour DotNet 1 et 2 sera disponible.

Par ailleurs Winzip n'est pas gratuit, et contrairement à ce que j'ai indiqué dans ma doc, PkZip n'est pas gratuit, c'était un shareware non protégé, le premier logiciel du genre : je l'ai utilisé un million de fois, et après j'avais acheté la version 25 (fournie avec PKZip pour Windows) qui gère les noms long. Manque de pot, il est un peu bogué et il n'a jamais été mis à jour.
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
27 mars 2006 à 15:59
Serait-il possible que la limite de taille du fichier soit aussi liée au disque dur? Le FAT32 ne permet que des fichiers de 4Go et le NTFS permet de dépasser cette limite. Simple hypothèse... je n'ai pas téléchargé la source donc pas essayé, mais j'ai déjà "vécu" ce problème en voulant copier un DVD sur une partition FAT32 et j'ai eu ce type de message.
Baddante Messages postés 33 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 24 février 2008
27 mars 2006 à 13:32
Bonjour,

je ne connais pas VB.NET mais je lis d'après vos commentaires que les tailles de fichiers de VB sont toujours limitéés à environ 2 Go

Essayé de récupéré la taille d'un fichier supérieur à 2 Go avec les "commandes VB", moi sur VB 6 cela renvoi un nombre négatif.

Ma solution est d'utilisé un composant FileSystemObject :

code vbs : (devrait retourné une taille correcte)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("c:\grofichier.tst")
Wscript.Echo "Size: " & objFile.Size

A noter que sur le zip officiel de Winzip il est reconnu qu'il y a des bugs sur les fichiers supérieur à 2 Go. (Winzip 9 repousse cette limite à 4 Go !)
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
25 mars 2006 à 08:59
J'ai regardé le code source de ton exe, et je n'ai pas vu de différence au niveau du zip, je maintient donc ce que j'ai dis, ton logiciel devrait avoir les mêmes limites que le mien.
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 17:32
je t'ai envoyé l'exé... dis moi ce que t'en penses...
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 16:54
je t'envoi l'exe si tu veux..
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 16:33
Alors si tu peux me l'envoyer par mail, ca serait sympa : patrice.dargenton@free.fr
(je ne le diffuse pas si tu préfères)
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 16:12
vb.net 2003
Le source je l'ai pas mis en ligne parce que je le modifi de temps en temps...
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 16:07
Tu utilises quel logiciel avec la dll ? on peut voir le code source ?
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 15:08
Perso dans mon zip avec la même DLL :
Je peux mettre autant de fichiers que je veux dans un même zip
J'ai testé aujourd'hui sur 9Go
Pas de souci... le fichier zip se crée normallement
Par contre lorsque j'essai de compresser un fichier >2Go ça plante
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 13:48
Tant que l'Offset est < Int2.MaxValue, on peut ajouter des fichiers (même si la taille du zip dépasse Int2.MaxValue), et dès que l'offset franchi cette valeur, il est traité comme un négatif par VB qui le passe alors à la dll avec une vigoureuse protestation de cette dernière (la dll lève une exception : Offset négatif). En tout cas, ZipEntry.Offset est déclaré en tant que Int32 signé dans l'explorateur VB.
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 12:04
non c'est le contraire... ???
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 11:59
Oui c'est bien ce qui me semblait aussi : si tu ajoutes un fichier de 10 Go à un zip de 1.9 Go, cela passe sans problème, mais dès que tu franchis le cap des 2.1 Go, tu ne peux plus ajouter le moindre fichier, petit ou gros.
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 11:31
Oups, je viens de faire un test sur des fichiers de + 2Go... et effectivement ça ne fonctionne pas...
J'avais pas vu... à la cata...
Par contre on peu compresser plusieurs Go de données sans problèmes...(c'est comme ça que je l'avais compris...)
Désolé
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 10:29
Anthride : il se peut très bien qu'il s'agisse d'un des fameux bug de Windows, ton zip est peut être parfait, et dans ce cas, tu ne peux absolument rien y faire (c'est juste une coincidence : tu tombes sur le bug de Windows, cela ne dépend que de la taille zip et c'est tout ! cela n'a vraiment rien à voir avec VBWinBackup, cela aurrait pu etre un zip fait par WinZip)
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 10:25
Eldim : j'aimerai bien savoir comment il est possible de dépasser les 2 Go en VB.Net, pour le moment, je ne vois vraiment pas (envoi quand meme la dll STP, je verrai peut être s'il faut que je modifie mon prog. en plus ca m'intéresse beaucoup car j'ai vraiment besoin de dépasser cette limite).

Anthride : je ne vois pas pourquoi tu ne pourrais pas ouvrir les zip avec Windows, tu peux m'en envoyer un qui pose problème pour voir ce qui ne va pas ?
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
23 mars 2006 à 09:09
J'aurai préféré te l'envoyer par MP mais visiblement on ne peut pas y insérer de fichier... De toute façon je ne vois pas ce que ça va t'apporter... car c'est ton prog qu'il faut modifier...
anthride Messages postés 10 Date d'inscription vendredi 19 avril 2002 Statut Membre Dernière intervention 4 mai 2008
23 mars 2006 à 08:53
j'ai Remplacé ta Fonction "BZipperFichier" par le code suivant: et je peux Lire mes fichiers avec le Zip de Windows XP . Pour l'instant je ne sais pas pourquoi mais je cherche :

'======================================
' Zipper un fichier FACON odev
Dim bReessayer As Boolean
Reessayer:
bReessayer = False


'=== Traitement d'un Fichier Seul
' Ouverture en lecture du fichier à zipper
' MyFileStream = File.OpenRead(CellNomFich.Value)
MyFileStream = File.OpenRead(sCheminFichier$)

' Enregistrement dans le zip de la référence du fichier d 'entrée
MyZipEntry = New ICSharpCode.SharpZipLib.Zip.ZipEntry(Path.GetFileName(sCheminFichier$))
ZipOutStream.PutNextEntry(MyZipEntry)

' Lecture et zip du fichier par blocs de 4096 bytes
Dim count As Integer
count = MyFileStream.Read(buffer, 0, 4096)
While (count > 0)
ZipOutStream.Write(buffer, 0, count)
count = MyFileStream.Read(buffer, 0, 4096)
End While
MyFileStream.Flush()
MyFileStream.Close()
' EcrLigRapport(1, CellNomFich.Value, ChemFichComp$, "")

OdeVbZipperFichier = True
Exit Function
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 mars 2006 à 08:46
Pour la version de VSN, tu as raison, dans le menu A propos, c'est bien 7.1 pour 2003.

Tu peux m'envoyer la version 0.6 par mail ?
patrice.dargenton@free.fr
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
22 mars 2006 à 18:27
Excuse moi, pour la version de VB si tu install les 2 sur un même PC sur ton fichier sln il te l'indique...
Je n'ai pas utilisé le C# pour le développé mais de toutes façon toutes les class du C# sont utilisables en VB.NET...

Ce qui me gêne dans ton source c'est qu'il s'appelle backup alors que ce n'est qu'un programme de compression... mais c'est du détail..

Quand au zip >4Go, je n'ai pas eu de souci majeur pour en faire avec la version 0.6 de la même dll... mais je me répète ils ne sont pas ouvrable directement avec windows (mais si tu fais un prog de lecture de ton zip ça marchera...)
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 mars 2006 à 17:23
En fait, il y a eu une version 2002 de Visual Studio, on est donc obligé de la considérer comme un VB7 à part entière, sauf si on considère la plateforme DotNet, alors effectivement on pourrait dire aussi VB7.1 pour la 2003, bof, de toute façon, j'ai précisé l'année à chaque fois.

En C#, on devrait aller jusqu'à 4 Go, mais pour fabriquer des zip en VB.Net, on est limité pour l'instant à 2 Go, en attendant la futur version 0.85 de la dll. Maintenant, pour dézipper, cela fonctionne peut-être. J'ai peut être mal compris ta question ? (la seule explication que je voie à ton message, c'est que tu as utilisé C#)

Sauvegarde incrémentielle : je pense qu'il suffit d'ouvrir un zip et d'en créer un autre, tout en ajoutant les fichiers qui ont changés, cela devrait marcher, mais ce n'est pas fait (autant refaire complètement le zip, la différence devrait être parfaitement négligeable, étant donnée qu'on manipule un seul gros fichier zip, cela serait plus rapide seulement si on stockait à part les incréments).
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
22 mars 2006 à 11:55
Bonjour,
Je viens de lire ta doc et certains points me semblent bizarres... tout d'abord vb2003 c'est VB7.1 et VB2005 c'est VB8

Ensuite tu prétends qu'au-dessus de 4Go le ZIP bloque... j'ai fais un ZIP partir de la meme DLL mais en version 0.6 et je n'ai eu le problème qu'en lecture avec le zip de windows, lorsque je reli le zip>4Go avec la dll ça fonctionne parfaitement

En tout cas bravo pour la recherche d'infos, tout le monde ne fait pas ça...
J'ai pas encore testé, simple question : tu dis que c'est un programme de backup, est-ce qu'il permet la sauvegade incrémentielle ?
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 mars 2006 à 07:16
Je l'ai indiqué dans ma doc : la gestion des zip de Windows est incroyablement boguée, c'est pas des blagues, il suffit d'être un utilisateur intensif des zip.
Pour le taux de compression, je l'ai aussi mis dans ma doc : environ 5% moins performant qu'InfoZip.
anthride Messages postés 10 Date d'inscription vendredi 19 avril 2002 Statut Membre Dernière intervention 4 mai 2008
21 mars 2006 à 18:46
Encore Merci

Mais j'ai un petit Probleme : je peix ouvrir mes Fichiers Zip avec WinZip mais pas avec Dossiers Zip de WinDows .

Est le taux de Compression ?
Si tu as une idée merci DESVERNES Claude
anthride Messages postés 10 Date d'inscription vendredi 19 avril 2002 Statut Membre Dernière intervention 4 mai 2008
21 mars 2006 à 16:36
Merci

J'etais en trait de batailler avec ICSharpCode.SharpZipLib.dll lorsque j'ai vu ton exemple.
Cela ma ausi beaucoup servi pour la gestion des Fichiers et des Repertoires.
Je peux donc inserer des procedures de sauvegardes dans mes applis.

Si un jour je peux t'aider : anthride@Tiscali.fr
vbkarraywalid Messages postés 13 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 10 juillet 2006
19 mars 2006 à 17:40
Excellent travail, continuez !

vbkarraywalid
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 mars 2006 à 11:32
Oui, il suffit juste de modifier la ligne suivante dans la fonction AfficherInfos() :
Me.m_sCheminRacineZip = sCheminAppli()
On peut aussi faire un batch qui appele VBWinBackup et renomme le zip à la fin, cela le fait très bien :
Start /w VBWinBackup.exe
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
19 mars 2006 à 10:57
Ca à l'air trés bon !

Si je veux sauvergarder une arborescence spécifique à un endroit déterminé à l'avance (un Back péridodique par exemple) C'est faisable ?
Par exemple :
C:\Dossier a Sauvergarder (Pour la source)
D:\Dossier de destination des Zip\NomDuZip_Date.zip

Merci coop

Afyn
Rejoignez-nous