Aujourd'hui je ne "fais" pas vraiment "dans" l'innovation, puisque je me
suis retrouvé face à des programmes de sauvegarde qui manquaient de
mémoire tantôt l'un, tantôt l'autre, sans que personne ne réussisse à
trouver une explication.
J'ai donc écrit mon propre joujou.
J'avais d'abord pensé parcourir un répertoire par Dir(), mais Dir a du
mal à être récursif : quand on liste un sous-répertoire, une fois qu'on
revient au répertoire ascendant, Dir retourne une erreur.
Il aurait donc fallu créer un tableau de chaînes pour chaque répertoire,
parcourir le répertoire trois fois, une fois pour dimensionner le
tableau, une fois pour le renseigner, et une fois pour traiter les
sous-répertoires. En ne sachant pas dans l'absolu combien on aura de
répertoires à traiter. Ou alors utiliser des tableaux dynamiques, ça
marche bien, ça, dans ce cas ?
Finalement je me suis simplifié l'existence, j'ai utilisé
FileSystemObject. ça fait l'objet de critiques, fso utilise beaucoup de
ressources, mais question récursivité, aucun souci il me semble.
Et justement, mon développement sur le traitement le plus basique et
universel qui soit, était motivé par le fait que les commandes standard
(XCOPY, Robocopy) ... manquaient de ressources. Pour XCOPY : traitement
interrompu, mémoire insuffisante. Pour Robocopy : même pas besoin d'en
dire autant. On copie normalement pendant cinq secondes, poussivement
pendant les cinq secondes suivantes, et ensuite il ne se passe plus
rien, les témoins des disques sont éteints, on attend que l'utilisateur
interrompe le traitement par le gestionnaire des tâches. Et fso s'en est
très bien sorti de ce point de vue.
J'ai donc quelque chose du style
Public Sub GereRepertoire(ByVal Rep As Folder)
Set objSousReps = Rep.SubFolders
For Each Fic in Rep.Files
GereFichier Fic
Next
For Each SR in objSousReps
GereRepertoire fso.GetFolder(SR.path)
Next
End Sub
ça fait peut-être un peu lourd fso.GetFolder(SR.path) pour retourner SR,
je ne me rappelle plus trop mais je pense que si j'ai fait comme ça
c'est que je devais avoir un message d'erreur autrement.
Quelque chose que j'apprécie bien c'est que ça va jusqu'au bout sans se
planter, ni me dire qu'on manque de mémoire.
Mais là, me voilà pris d'un doute : j'ai cherché un fichier, et j'ai dû
aller le prendre sur la source, il n'avait pas été copié.
Je me suis dit qu'il avait dû y avoir une erreur que j'avais oubliée,
ben non, le fichier n'est pas inscrit dans le compte-rendu de sauvegarde.
Quelque chose me dit quand même que si mon algorithme était complètement
délirant il en manquerait plus que ça.
La vérification désoriente un peu d'ailleurs, car l'explorateur trie
obligatoirement les fichiers, alors que For Each file in, les retourne
apparemment dans l'ordre de la création. Enfin ça c'est anecdotique.
Il y aura une recherche d'un outil de vérification, pour comparer la
source et la cible, mais la question qui relève de ce newsgroup serait
surtout la suivante : y a-t-il une grossière erreur dans ma démarche ?
Avec la procédure que j'ai indiquée ci-dessus, peut-on s'attendre à ce
que GereFichier ne soit pas appelé pour tous les fichiers ?
ça tombe bien, chez moi ça a bien été transcrit par deux doubles points. ____________________ Clive Lumb a écrit :
Note: Dans mon post ci-dessus, les lignes du fichier bat qui commencent avec ">>" devrait commencer par deux fois ":" C'est mon lecteur de news qui a pris les "::" pour des quotes
Afficher le résultat
call notepad "%LogLoc%" Goto :EOF
ça tombe bien, chez moi ça a bien été transcrit par deux doubles points.
____________________
Clive Lumb a écrit :
Note:
Dans mon post ci-dessus, les lignes du fichier bat qui commencent avec ">>"
devrait commencer par deux fois ":"
C'est mon lecteur de news qui a pris les "::" pour des quotes
ça tombe bien, chez moi ça a bien été transcrit par deux doubles points. ____________________ Clive Lumb a écrit :
Note: Dans mon post ci-dessus, les lignes du fichier bat qui commencent avec ">>" devrait commencer par deux fois ":" C'est mon lecteur de news qui a pris les "::" pour des quotes
Afficher le résultat
call notepad "%LogLoc%" Goto :EOF
Gloops
Clive Lumb a écrit :
D'abord j'utilise la version 10 de Robocopy, tu pourras le télécharger avec la doc ici: http://clumb.free.fr/robocopy.zip
Ah, ben voilà une bonne réponse ! ça fait tout drôle de poser une question dans un newsgroup et d'avoir la réponse dans un autre. Je n'avais pas choisi le bon finalement. :)
La ligne de commande (en fichier bat) "kivabien" pour moi est reproduit en fin de post
On peut utiliser l'option /IPG:n où "n" est un delai en millisecondes entre paquets de 64k - si ton disque/système a des problèmes pour suivre cela pourrait être utile.
Qui sait, ça peut aider. J'ai vu que l'application VB met un peu de temps à rendre le contrôle quand elle copie des gros fichiers, quand on a une autre application gourmande ça la freine. Avec cette option ça devrait être plus "fluent".
Toutefois Xcopy et Robocopy utilisent les fonctions de base de Windows pour copier les fichiers - en consequence ils devraient être très très fiables et devraient gèrer les erreurs, disques lents etc. sans le moindre problème. Si tu as des problèmes de manque de memoire/plantage il faut soupçonner un problème ailleurs. Outre des histoires de driver, chipset ide etc. déjà évoquées, je me demande si ce n'est pas un autre programme qui tourne qui pourrait être la source du problème. - Tu n'auras pas quelquechose qui regarde l'usage des fichiers comme filemon ou diskmon de Sysinternals ? - Ton anti-virus aussi pourrait "exploser" si tu fait trop d'actions disque pour lui (je parle des AVALC - "anti-virus à la con" tels que NOD), essayer de désactiver le scan en temps réel pendant la copie. - Service indexation activé sur le disque destination ? Cela pourrait poser un problème. - Disque USB et modem ADSL USB sur la même interface ? - Disque USB 2.5" auto-alimenté par l'USB ? - Chipset VIA ancienne génération ?
Effectivement, j'ai l'indexation active, plus l'AVALC fourni avec la machine pour trois mois (il est systématiquement installé sur les machines neuves, sinon avec tout le mal qu'on dit de lui ils n'auraient peut-être pas beaucoup de clients ; du coup je laisse McAfee sur l'ancienne machine, ça me laisse le temps de voir venir).
C'est vrai que c'est un AVALC comme tu dis, puisqu'il m'oblige à désactiver le lancement du logiciel de paramétrage de la carte vidéo, sinon depuis une certaine mise à jour la touche Windows ne peut pas être rémanente (et sur ce coup-là je n'ai pas été très méfiant, le vendeur m'a décrit l'engin, qui était en stock dans l'entrepôt à côté, j'ai dit allons-y, ça fait que je n'ai pas regardé le clavier avant d'acheter, or c'est le point faible de Toshiba -ils m'ont casé la touche Windows dans le coin en haut à droite, donc son caractère rémanent est obligatoire sauf si on a une deuxième paire de mains).
Pendant un temps j'arrivais à m'en sortir avec la restauration système, et puis un jour les points de restauration ont tous disparu à la fois sans préavis. Il va bien falloir que je trouve le temps d'installer Ghost.
Pour ce qui est de la carte mère je ne saurais dire, je n'ai pas encore installé Everest, et je suis un peu largué dans MSINFO32. Enfin la catégorie "périphériques à problème" est vide, c'est au moins déjà ça d'encourageant. ça aurait été épatant d'avoir une machine qui démarre si bien, qui lance les programmes si vite (avec juste un hic sur les sauvegardes), avec plein de périphériques à problème.
La connexion ADSL se fait par port Ethernet. Wanadoo m'avait proposé un modem USB, mais quand je m'en suis rendu compte je l'ai vite échangé, car les ports USB on n'en a jamais trop, alors que le port Ethernet on n'a guère autre chose à en faire. C'est vrai que la "raie manta" est un peu plus encombrante et a de moins jolies petites lupiotes, m'enfin d'un point de vue pratique ...
Les disques externes ont leur alimentation propre. J'en ai un (parti en révision d'ailleurs) qui pourrait s'alimenter sur port USB sur une machine qui supporterait, mais en général je branche l'alimentation.
Voilà
Clive
:: Lancer le bat à partir du disque DESTINATION ::Il trouvera tout seul la lettre de ce disque
Je regarde ça un de ces quatre. En attendant, il y a l'imprimante qui attend que je m'occupe d'elle depuis quelques jours, et plein plein de courrier qui traîne.
Merci pour ces tuyaux.
Clive Lumb a écrit :
D'abord j'utilise la version 10 de Robocopy, tu pourras le télécharger avec
la doc ici:
http://clumb.free.fr/robocopy.zip
Ah, ben voilà une bonne réponse !
ça fait tout drôle de poser une question dans un newsgroup et d'avoir la
réponse dans un autre. Je n'avais pas choisi le bon finalement. :)
La ligne de commande (en fichier bat) "kivabien" pour moi est reproduit en
fin de post
On peut utiliser l'option /IPG:n où "n" est un delai en millisecondes entre
paquets de 64k - si ton disque/système a des problèmes pour suivre cela
pourrait être utile.
Qui sait, ça peut aider.
J'ai vu que l'application VB met un peu de temps à rendre le contrôle
quand elle copie des gros fichiers, quand on a une autre application
gourmande ça la freine. Avec cette option ça devrait être plus "fluent".
Toutefois Xcopy et Robocopy utilisent les fonctions de base de Windows pour
copier les fichiers - en consequence ils devraient être très très fiables et
devraient gèrer les erreurs, disques lents etc. sans le moindre problème. Si
tu as des problèmes de manque de memoire/plantage il faut soupçonner un
problème ailleurs. Outre des histoires de driver, chipset ide etc. déjà
évoquées, je me demande si ce n'est pas un autre programme qui tourne qui
pourrait être la source du problème.
- Tu n'auras pas quelquechose qui regarde l'usage des fichiers comme filemon
ou diskmon de Sysinternals ?
- Ton anti-virus aussi pourrait "exploser" si tu fait trop d'actions disque
pour lui (je parle des AVALC - "anti-virus à la con" tels que NOD), essayer
de désactiver le scan en temps réel pendant la copie.
- Service indexation activé sur le disque destination ? Cela pourrait poser
un problème.
- Disque USB et modem ADSL USB sur la même interface ?
- Disque USB 2.5" auto-alimenté par l'USB ?
- Chipset VIA ancienne génération ?
Effectivement, j'ai l'indexation active, plus l'AVALC fourni avec la
machine pour trois mois (il est systématiquement installé sur les
machines neuves, sinon avec tout le mal qu'on dit de lui ils n'auraient
peut-être pas beaucoup de clients ; du coup je laisse McAfee sur
l'ancienne machine, ça me laisse le temps de voir venir).
C'est vrai que c'est un AVALC comme tu dis, puisqu'il m'oblige à
désactiver le lancement du logiciel de paramétrage de la carte vidéo,
sinon depuis une certaine mise à jour la touche Windows ne peut pas être
rémanente (et sur ce coup-là je n'ai pas été très méfiant, le vendeur
m'a décrit l'engin, qui était en stock dans l'entrepôt à côté, j'ai dit
allons-y, ça fait que je n'ai pas regardé le clavier avant d'acheter, or
c'est le point faible de Toshiba -ils m'ont casé la touche Windows dans
le coin en haut à droite, donc son caractère rémanent est obligatoire
sauf si on a une deuxième paire de mains).
Pendant un temps j'arrivais à m'en sortir avec la restauration système,
et puis un jour les points de restauration ont tous disparu à la fois
sans préavis. Il va bien falloir que je trouve le temps d'installer Ghost.
Pour ce qui est de la carte mère je ne saurais dire, je n'ai pas encore
installé Everest, et je suis un peu largué dans MSINFO32. Enfin la
catégorie "périphériques à problème" est vide, c'est au moins déjà ça
d'encourageant. ça aurait été épatant d'avoir une machine qui démarre si
bien, qui lance les programmes si vite (avec juste un hic sur les
sauvegardes), avec plein de périphériques à problème.
La connexion ADSL se fait par port Ethernet. Wanadoo m'avait proposé un
modem USB, mais quand je m'en suis rendu compte je l'ai vite échangé,
car les ports USB on n'en a jamais trop, alors que le port Ethernet on
n'a guère autre chose à en faire. C'est vrai que la "raie manta" est un
peu plus encombrante et a de moins jolies petites lupiotes, m'enfin d'un
point de vue pratique ...
Les disques externes ont leur alimentation propre. J'en ai un (parti en
révision d'ailleurs) qui pourrait s'alimenter sur port USB sur une
machine qui supporterait, mais en général je branche l'alimentation.
Voilà
Clive
:: Lancer le bat à partir du disque DESTINATION
::Il trouvera tout seul la lettre de ce disque
Je regarde ça un de ces quatre. En attendant, il y a l'imprimante qui
attend que je m'occupe d'elle depuis quelques jours, et plein plein de
courrier qui traîne.
D'abord j'utilise la version 10 de Robocopy, tu pourras le télécharger avec la doc ici: http://clumb.free.fr/robocopy.zip
Ah, ben voilà une bonne réponse ! ça fait tout drôle de poser une question dans un newsgroup et d'avoir la réponse dans un autre. Je n'avais pas choisi le bon finalement. :)
La ligne de commande (en fichier bat) "kivabien" pour moi est reproduit en fin de post
On peut utiliser l'option /IPG:n où "n" est un delai en millisecondes entre paquets de 64k - si ton disque/système a des problèmes pour suivre cela pourrait être utile.
Qui sait, ça peut aider. J'ai vu que l'application VB met un peu de temps à rendre le contrôle quand elle copie des gros fichiers, quand on a une autre application gourmande ça la freine. Avec cette option ça devrait être plus "fluent".
Toutefois Xcopy et Robocopy utilisent les fonctions de base de Windows pour copier les fichiers - en consequence ils devraient être très très fiables et devraient gèrer les erreurs, disques lents etc. sans le moindre problème. Si tu as des problèmes de manque de memoire/plantage il faut soupçonner un problème ailleurs. Outre des histoires de driver, chipset ide etc. déjà évoquées, je me demande si ce n'est pas un autre programme qui tourne qui pourrait être la source du problème. - Tu n'auras pas quelquechose qui regarde l'usage des fichiers comme filemon ou diskmon de Sysinternals ? - Ton anti-virus aussi pourrait "exploser" si tu fait trop d'actions disque pour lui (je parle des AVALC - "anti-virus à la con" tels que NOD), essayer de désactiver le scan en temps réel pendant la copie. - Service indexation activé sur le disque destination ? Cela pourrait poser un problème. - Disque USB et modem ADSL USB sur la même interface ? - Disque USB 2.5" auto-alimenté par l'USB ? - Chipset VIA ancienne génération ?
Effectivement, j'ai l'indexation active, plus l'AVALC fourni avec la machine pour trois mois (il est systématiquement installé sur les machines neuves, sinon avec tout le mal qu'on dit de lui ils n'auraient peut-être pas beaucoup de clients ; du coup je laisse McAfee sur l'ancienne machine, ça me laisse le temps de voir venir).
C'est vrai que c'est un AVALC comme tu dis, puisqu'il m'oblige à désactiver le lancement du logiciel de paramétrage de la carte vidéo, sinon depuis une certaine mise à jour la touche Windows ne peut pas être rémanente (et sur ce coup-là je n'ai pas été très méfiant, le vendeur m'a décrit l'engin, qui était en stock dans l'entrepôt à côté, j'ai dit allons-y, ça fait que je n'ai pas regardé le clavier avant d'acheter, or c'est le point faible de Toshiba -ils m'ont casé la touche Windows dans le coin en haut à droite, donc son caractère rémanent est obligatoire sauf si on a une deuxième paire de mains).
Pendant un temps j'arrivais à m'en sortir avec la restauration système, et puis un jour les points de restauration ont tous disparu à la fois sans préavis. Il va bien falloir que je trouve le temps d'installer Ghost.
Pour ce qui est de la carte mère je ne saurais dire, je n'ai pas encore installé Everest, et je suis un peu largué dans MSINFO32. Enfin la catégorie "périphériques à problème" est vide, c'est au moins déjà ça d'encourageant. ça aurait été épatant d'avoir une machine qui démarre si bien, qui lance les programmes si vite (avec juste un hic sur les sauvegardes), avec plein de périphériques à problème.
La connexion ADSL se fait par port Ethernet. Wanadoo m'avait proposé un modem USB, mais quand je m'en suis rendu compte je l'ai vite échangé, car les ports USB on n'en a jamais trop, alors que le port Ethernet on n'a guère autre chose à en faire. C'est vrai que la "raie manta" est un peu plus encombrante et a de moins jolies petites lupiotes, m'enfin d'un point de vue pratique ...
Les disques externes ont leur alimentation propre. J'en ai un (parti en révision d'ailleurs) qui pourrait s'alimenter sur port USB sur une machine qui supporterait, mais en général je branche l'alimentation.
Voilà
Clive
:: Lancer le bat à partir du disque DESTINATION ::Il trouvera tout seul la lettre de ce disque
Je regarde ça un de ces quatre. En attendant, il y a l'imprimante qui attend que je m'occupe d'elle depuis quelques jours, et plein plein de courrier qui traîne.
Merci pour ces tuyaux.
Gloops
Gloops a écrit :
C'est vrai que c'est un AVALC comme tu dis, puisqu'il m'oblige à désactiver le lancement du logiciel de paramétrage de la carte vidéo, sinon depuis une certaine mise à jour la touche Windows ne peut pas être rémanente (et sur ce coup-là je n'ai pas été très méfiant, le vendeur m'a décrit l'engin, qui était en stock dans l'entrepôt à côté, j'ai dit allons-y, ça fait que je n'ai pas regardé le clavier avant d'acheter, or c'est le point faible de Toshiba -ils m'ont casé la touche Windows dans le coin en haut à droite, donc son caractère rémanent est obligatoire sauf si on a une deuxième paire de mains).
Pour ce problème je n'ai pas encore fait remonter l'info. Triste à dire, mais il va falloir débourser du surtaxé pour savoir si je suis le seul, histoire de savoir si c'est à moi de prévenir Norton et ATI, ou au SAV de la machine.
Gloops a écrit :
C'est vrai que c'est un AVALC comme tu dis, puisqu'il m'oblige à
désactiver le lancement du logiciel de paramétrage de la carte vidéo,
sinon depuis une certaine mise à jour la touche Windows ne peut pas être
rémanente (et sur ce coup-là je n'ai pas été très méfiant, le vendeur
m'a décrit l'engin, qui était en stock dans l'entrepôt à côté, j'ai dit
allons-y, ça fait que je n'ai pas regardé le clavier avant d'acheter, or
c'est le point faible de Toshiba -ils m'ont casé la touche Windows dans
le coin en haut à droite, donc son caractère rémanent est obligatoire
sauf si on a une deuxième paire de mains).
Pour ce problème je n'ai pas encore fait remonter l'info. Triste à dire,
mais il va falloir débourser du surtaxé pour savoir si je suis le seul,
histoire de savoir si c'est à moi de prévenir Norton et ATI, ou au SAV
de la machine.
C'est vrai que c'est un AVALC comme tu dis, puisqu'il m'oblige à désactiver le lancement du logiciel de paramétrage de la carte vidéo, sinon depuis une certaine mise à jour la touche Windows ne peut pas être rémanente (et sur ce coup-là je n'ai pas été très méfiant, le vendeur m'a décrit l'engin, qui était en stock dans l'entrepôt à côté, j'ai dit allons-y, ça fait que je n'ai pas regardé le clavier avant d'acheter, or c'est le point faible de Toshiba -ils m'ont casé la touche Windows dans le coin en haut à droite, donc son caractère rémanent est obligatoire sauf si on a une deuxième paire de mains).
Pour ce problème je n'ai pas encore fait remonter l'info. Triste à dire, mais il va falloir débourser du surtaxé pour savoir si je suis le seul, histoire de savoir si c'est à moi de prévenir Norton et ATI, ou au SAV de la machine.
Gloops
Au fait, je n'ai pas percuté tout de suite, mais hier soir j'ai fait une sauvegarde avec XCOPY, et c'est passé comme une lettre à la poste (enfin sauf pour modifier, je vais mettre un mot dans le newsgroup windowsxp).
Comme je disais par ailleurs, il semblait y avoir un conflit entre l'antivirus et le programme de configuration de la carte vidéo. Peut-être le fait de désactiver un des deux a-t-il, en plus de permettre la touche Windows rémanente, solutionné ce problème de mémoire pour les sauvegardes.
C'est très empirique comme approche, mais pour le moment je n'en ai pas d'autre.
Au fait, je n'ai pas percuté tout de suite, mais hier soir j'ai fait une
sauvegarde avec XCOPY, et c'est passé comme une lettre à la poste (enfin
sauf pour modifier, je vais mettre un mot dans le newsgroup windowsxp).
Comme je disais par ailleurs, il semblait y avoir un conflit entre
l'antivirus et le programme de configuration de la carte vidéo.
Peut-être le fait de désactiver un des deux a-t-il, en plus de permettre
la touche Windows rémanente, solutionné ce problème de mémoire pour les
sauvegardes.
C'est très empirique comme approche, mais pour le moment je n'en ai pas
d'autre.
Au fait, je n'ai pas percuté tout de suite, mais hier soir j'ai fait une sauvegarde avec XCOPY, et c'est passé comme une lettre à la poste (enfin sauf pour modifier, je vais mettre un mot dans le newsgroup windowsxp).
Comme je disais par ailleurs, il semblait y avoir un conflit entre l'antivirus et le programme de configuration de la carte vidéo. Peut-être le fait de désactiver un des deux a-t-il, en plus de permettre la touche Windows rémanente, solutionné ce problème de mémoire pour les sauvegardes.
C'est très empirique comme approche, mais pour le moment je n'en ai pas d'autre.
Fred
Dans : news:, Gloops disait :
Euh, si tu pouvais me le refaire au ralenti, ça serait sympa :)
Ce que bayosky veut dire, c'est qu'il y a un objet folder dans Scripting et un autre dans VB.
Public Sub GereRepertoire(ByVal Rep As Scripting.Folder) Dim SR as Scripting.Folder Dim Fic as Scripting.File
For Each Fic in Rep.Files GereFichier Fic Next For Each SR in Rep.SubFolders GereRepertoire SR Next End Sub
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Dans : news:u0VWFXXSGHA.2176@TK2MSFTNGP10.phx.gbl,
Gloops disait :
Euh, si tu pouvais me le refaire au ralenti, ça serait sympa :)
Ce que bayosky veut dire, c'est qu'il y a un objet folder dans Scripting
et un autre dans VB.
Public Sub GereRepertoire(ByVal Rep As Scripting.Folder)
Dim SR as Scripting.Folder
Dim Fic as Scripting.File
For Each Fic in Rep.Files
GereFichier Fic
Next
For Each SR in Rep.SubFolders
GereRepertoire SR
Next
End Sub