skaman85 Posté(e) le 8 mars 2010 Partager Posté(e) le 8 mars 2010 Bonjour, Voilà mon problème : Mon responsable me demande de créer un .bat me permettant de copier sur un lecteur REV les images Ghost effectuées chaque jour. Le problème est qu'il veut que je copie seulement les images de la veille et non toutes les images Voici l'arborescence du dossier à copier : WITHSERVER_D_Drive016.v2i du 8/03/10 WITHSERVER_C_Drive028.v2i du 8/03/10 WITHSERVER_D_Drive015.v2i du 7/03/10 WITHSERVER_C_Drive027.v2i du 7/03/10 Est-ce clair? Je pensais à du xcopy forcément mais je ne vois pas comment m'y prendre. Voici mon ébauche : @echo off cd G:\ xcopy Sauvegarde H:\Sauvegarde /V /D /S pause Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 8 mars 2010 Partager Posté(e) le 8 mars 2010 Il faudrait donc un programme qui liste tous les fichiers d'un dossier précis, puis copie les fichiers en fonction de la date, en prenant seulement ceux de la veille ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 9 mars 2010 Auteur Partager Posté(e) le 9 mars 2010 Il faudrait donc un programme qui liste tous les fichiers d'un dossier précis, puis copie les fichiers en fonction de la date, en prenant seulement ceux de la veille ? Oui c'est exactement sa! juste ceux de la veille pas le reste Une idée? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 9 mars 2010 Partager Posté(e) le 9 mars 2010 Il faudrait donc un programme qui liste tous les fichiers d'un dossier précis, puis copie les fichiers en fonction de la date, en prenant seulement ceux de la veille ? Oui c'est exactement sa! juste ceux de la veille pas le reste Une idée? Batch uniquement, ou autre langage windows possible ? Un programme sinon ? Faut il copier seulement les images de la veille (donc supprimer les plus anciennes) ou copier les images de la veille (dans le sens "on a tout l'dossier, fait juste le différentiel") ? Si c'est le cas 2, Robocopy de Microsoft fera ça très bien (et en plus, easy script ) Sinon, dans le premier cas, je verrais plus un script en VBscript ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 9 mars 2010 Partager Posté(e) le 9 mars 2010 Ah oui pas bête pour Robocopy, ça ferait tout seul... Autrement s'il ne faut pas du différentiel, de mon côté je pourrais regarder avec AutoIt Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 9 mars 2010 Auteur Partager Posté(e) le 9 mars 2010 Batch uniquement, ou autre langage windows possible ? Un programme sinon ?Faut il copier seulement les images de la veille (donc supprimer les plus anciennes) ou copier les images de la veille (dans le sens "on a tout l'dossier, fait juste le différentiel") ? Si c'est le cas 2, Robocopy de Microsoft fera ça très bien (et en plus, easy script ) Sinon, dans le premier cas, je verrais plus un script en VBscript ... Je voudrais bien éviter les programmes extérieur à Microsoft, c'est un 2008 R2 juste installé j'ai pas envi de commencé à le pourrir lol Je ré explique : Ghost me créer 2 images chaque jour de mon C et D. les images J-2 sont supprimées et remplacés par celle de J-1 suis-je clair ? Donc il faut juste copier les images de la veille et non les anciennes Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 9 mars 2010 Partager Posté(e) le 9 mars 2010 Je peux le faire en AutoIt, c'est juste un .exe, mais bon si vous voulez uniquement du batch j'avoue que je ne sais pas le faire... Higapeon propose du VBS, ça ne rajoute aucun programme si vous préférez ? Quoi qu'il en soit, j'aimerais comprendre : Ghost vous crée une nouvelle image chaque jour, et supprime celles anciennes, c'est bien ça ? Et vous voulez copier uniquement les nouvelles dans le disque dur externe et / ou réseau ? Si oui, une simple sauvegarde incrémentielle avec Robocopy (comme indiqué par Higapeon) suffirait Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 10 mars 2010 Auteur Partager Posté(e) le 10 mars 2010 Je peux le faire en AutoIt, c'est juste un .exe, mais bon si vous voulez uniquement du batch j'avoue que je ne sais pas le faire...Higapeon propose du VBS, ça ne rajoute aucun programme si vous préférez ? Quoi qu'il en soit, j'aimerais comprendre : Ghost vous crée une nouvelle image chaque jour, et supprime celles anciennes, c'est bien ça ? Et vous voulez copier uniquement les nouvelles dans le disque dur externe et / ou réseau ? Si oui, une simple sauvegarde incrémentielle avec Robocopy (comme indiqué par Higapeon) suffirait Ghost me crée une nouvelle image chaque jour en supprimant la J-2 c'est à dire qu'il me laisse sur mon serveur 2 jeux de sauvegarde moi ce que je veux c'est sauvegarder tous les jours le derniers jeux de sauvegardes. Mais le problème que je ne sait pas comment faire sachant qu'elles portent le même nom : WITHSERVER_D_Drive016.v2i du 8/03/10 WITHSERVER_C_Drive028.v2i du 8/03/10 WITHSERVER_D_Drive015.v2i du 7/03/10 WITHSERVER_C_Drive027.v2i du 7/03/10 Il y a juste la fin de l'image qui porte un numéro différent chaque jour et la date. Et pour ta deuxième question c'est exacte. Un .exe ou VBS est possible je me limite pas au .bat mais un truc propre qui me pourri pas mon serveur. Mais je ne vois pas du tout comment m'y prendre, j'ai pourtant tourner les truc dans tous les sens. HELP lol Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 10 mars 2010 Partager Posté(e) le 10 mars 2010 Un .exe ou VBS est possible je me limite pas au .bat mais un truc propre qui me pourri pas mon serveur. Dans ce cas, Robocopy est ton ami. Dans l'optique ou tu veux concerver juste ce que Ghost laisse, utilise robocopy avec /mir Sinon, regarde sur le net vite fait la doc en question, et utilise plutot /e (je ne suis plus sur du commutateur ...) qui fait de la copie différentielle sans suppression. Robocopy est un produit Sysinternals, qui est racheté depuis belle lurette par Microsoft. Mais ce n'est pas intégré par défaut ! (Ca se télécharge en gros ) @ECHO OFF ECHO o | DEL C:\Robocopy\Robocopy.log SET _source1= ****** SET _dest1= ****** SET _comment=/COPYALL /SEC /MIR :: /COPYALL :: Copie toutes les infos des fichiers :: /SEC :: Copie les ACL :: /MIR :: Fait une image miroir du dossier (copie parfaite, delete les vieux fichiers. les 2 rep sont identiques) SET _options=/R:1 /W:1 /LOG+:C:\Robocopy\Robocopy.log /NFL /NDL /TEE :: /R:n :: Nombre de tentatives de copie (si fichier deja occupé) :: /W:n :: Temps d'attente entre les tentatives :: /LOG :: Fichier log :: /NFL :: Pas de log des noms des fichiers :: /NDL :: Pas de log des noms des chemins (Ces 2 options permettent d'avoir des logs propres) :: /TEE :: Affiche les informations directement dans la fenêtre CMD c:\Robocopy\robocopy.exe %_source1% %_dest1% %_comment% %_options% Voila un exemple de script modulable pour Robocpy que j'utilise. Ensuite, tu crées une tache planifiée, et roulez jeunesse ! PS : Faut compléter les parties source & destination. Le script supporte les chemins UNC de partage distant :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 10 mars 2010 Auteur Partager Posté(e) le 10 mars 2010 Ok pas mal du tout, mais comment je fai avec mes noms d'images qui changent tous les jours? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 10 mars 2010 Partager Posté(e) le 10 mars 2010 Ok pas mal du tout, mais comment je fai avec mes noms d'images qui changent tous les jours? Pas de souci, le répertoire sera un miroir de celui ou arrive les images ghost. Prenons un exemple Jour 1, 13 h (heure du crime script). Dans le dossier source : Image 1 Image 2 Dans le dossier destination : Image 1 Apres l'execution, on se retrouve avec DS : Image 1 Image 2 DD : Image 1 Image 2 Jour 2, 13h DS : Image 2 Image 3 DD : Image 1 Image 2 Apres l'execution on se retrouve avec DS : Image 2 Image 3 DD : Image 2 Image 3. Source & destination sont a remplir avec des chemins de répertoires. Pas de fichiers Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 10 mars 2010 Auteur Partager Posté(e) le 10 mars 2010 on se comprend pas j'ai l'impression lol le problème est que je ne veux pas de toutes les images seulement les 2 plus récentes c'est a dire l'image du C et D. Pas les 2 autres Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 10 mars 2010 Partager Posté(e) le 10 mars 2010 on se comprend pas j'ai l'impression lolle problème est que je ne veux pas de toutes les images seulement les 2 plus récentes c'est a dire l'image du C et D. Pas les 2 autres Cordialement Okay, je viens de percuter. Pas possible via Robocopy, faudra faire avec VBS. Et là, je vais avoir plus de mal, n'ayant pas de script sous la main "tout fait" = / Peut être Amour pourra t'aider avec AutoIt, mon expertise s'arrête là pour le VBS (ou faudrait que je me plonge dedans genre "profondement" =/ ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
coolman Posté(e) le 10 mars 2010 Partager Posté(e) le 10 mars 2010 essaie un truc comme ca : @echo off cd <rep_source> dir <pattern>* /O:D /B > liste.txt FOR /F "skip=1" %f in (liste.txt) DO xcopy %f <rep_dest> DEL liste.txt <pattern> pourrait être égal a WITHSERVER_C ou WITHSERVER_D <rep_source> est le répertoire contenant les sauvegardes a copier <rep_dest> est le répertoire contenant la copie des sauvegardes Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 11 mars 2010 Auteur Partager Posté(e) le 11 mars 2010 Okey je vais essayé ça sauf que je ne capte pas tout au script peux tu me détailler les arguments stp. Lien vers le commentaire Partager sur d’autres sites More sharing options...
coolman Posté(e) le 11 mars 2010 Partager Posté(e) le 11 mars 2010 je vais essayer @echo off Désactivation de l'affichage des commandes dans la console cd <rep_source> On se place dans le répertoire contenant les fichiers a copier dir <pattern>* /O:D /B > liste.txt Je liste les fichier présent dans le répertoire en les triant par date (du plus vieux au plus récent) et en affichant uniquement les noms de fichiers (je n'affiche pas les dates, taille, etc.) <pattern> est le début commun des noms de fichiers a lister. Dans ton cas WITHSERVER_C ou WITHSERVER_D Je redirige la liste ainsi obtenu dans un fichier appelé liste.txt FOR /F "skip=1" %f in (liste.txt) DO xcopy %f <rep_dest> Je boucle sur le contenu du fichier liste.txt en omettant la 1ère ligne. En effet, vu que tu n'a que 2 fichiers correspondant au masque indiqué ci dessus, le 1er est le plus vieux. Je garde donc que le plus récent. le nom du fichier ainsi obtenu se retrouve dans la variable %f. J'appelle ensuite xcopy pour effectuer la copie a proprement parler dans le répertoire de destination. DEL liste.txt Je supprime le fichier temporaire liste.txt j'ajoute aussi que ce code est valable uniquement pour 1 pattern, il faudra recopier ensuite ce code en dessous avec le nouveau masque. Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 11 mars 2010 Auteur Partager Posté(e) le 11 mars 2010 Je vous remercie tous de votre aide très precieuse c'est exactement ce que je voulais. Voici mon script ( un grand merci à coolman ) : @echo off cd H:\Sauvegarde\ H: DEL * /S /F /Q cd G:\Sauvegarde\ G: dir WITHSERVER_D_Drive* /O:D /B > liste.txt dir WITHSERVER_C_Drive* /O:D /B > liste1.txt FOR /F "skip=1" %f in (liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL list*.txt pause Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 15 mars 2010 Partager Posté(e) le 15 mars 2010 Désolé du retard, je m'étais absenté quelques jours, en tout cas un grand merci à Higapeon et coolman Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 2 avril 2010 Auteur Partager Posté(e) le 2 avril 2010 Bon, en faite c'est pas résolu! Quand je lance le script dans l'invite de commande : cd H:\Sauvegarde\ H: DEL *.* /F /Q /S cd G:\Sauvegarde\ G: dir WITHSERVER_D_Drive* /O:D /B > liste.txt dir WITHSERVER_C_Drive* /O:D /B > liste1.txt FOR /F "skip=1" %f in (liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL list*.txt pause Tout ce passe bien. Par contre si je le lance depuis un .bat celui ci se lance mais s'arrête à la création des fichiers liste et liste1 aucune copie n'est effectué sur mon Disque H, idem pour une tache planifiée. Où est le problème? Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 2 avril 2010 Partager Posté(e) le 2 avril 2010 Bon, en faite c'est pas résolu!Quand je lance le script dans l'invite de commande : cd H:\Sauvegarde\ H: DEL *.* /F /Q /S cd G:\Sauvegarde\ G: dir WITHSERVER_D_Drive* /O:D /B > liste.txt dir WITHSERVER_C_Drive* /O:D /B > liste1.txt FOR /F "skip=1" %f in (liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL list*.txt pause Tout ce passe bien. Par contre si je le lance depuis un .bat celui ci se lance mais s'arrête à la création des fichiers liste et liste1 aucune copie n'est effectué sur mon Disque H, idem pour une tache planifiée. Où est le problème? Cordialement Il ne supporte pas les changements de répertoire en plein milieu du script je pense. Quand il est dans sa propre fenetre DOS, il comprend, mais pas lancé depuis un autre script. Renseigne les champs en entier, au pire, fait des constantes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 2 avril 2010 Auteur Partager Posté(e) le 2 avril 2010 Oui, maintenant que tu le dis ça peut être ça. Le problème est que je ne vois pas comment mettre mais chemin en entier, et qu'appels tu une constante? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 2 avril 2010 Partager Posté(e) le 2 avril 2010 et qu'appels tu une constante? La fonction "SET" dans un script. Ca te permet de faire un alias en gros. Dans le script robocopy que je t'avais copié, c'était pour les options. Ce n'est pas obligatoire hein. Je ne suis pas sur que le script marche avec les chemins complets, mais essaye ça DEL H:\Sauvegarde\*.* /F /Q /S dir G:\Sauvegarde\WITHSERVER_D_Drive* /O:D /B > liste.txt dir G:\Sauvegarde\WITHSERVER_C_Drive* /O:D /B > liste1.txt FOR /F "skip=1" %f in (liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL G:\Sauvegarde\list*.txt pause Lien vers le commentaire Partager sur d’autres sites More sharing options...
Higapeon Posté(e) le 2 avril 2010 Partager Posté(e) le 2 avril 2010 Donc après plusieurs tentative et quelques modification.... Cela ne marche toujours pas Voici ce que j'ai fait : @echo on DEL H:\Sauvegarde\*.* /F /Q /S pause dir G:\Sauvegarde\WITHSERVER_D_Drive* /O:D /B > G:\Sauvegarde\liste.txt dir G:\Sauvegarde\WITHSERVER_C_Drive* /O:D /B > G:\Sauvegarde\liste1.txt pause FOR /F "skip=1" %f in (liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL G:\Sauvegarde\list*.txt pause Grace au pause j'ai pu voir que c'est au moment de rentrer dans la boucle qu'il coupe. Cordialement C'est normal, jsuis con comme une pierre DEL H:\Sauvegarde\*.* /F /Q /S pause dir G:\Sauvegarde\WITHSERVER_D_Drive* /O:D /B > G:\Sauvegarde\liste.txt dir G:\Sauvegarde\WITHSERVER_C_Drive* /O:D /B > G:\Sauvegarde\liste1.txt pause FOR /F "skip=1" %f in (G:\Sauvegarde\liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (G:\Sauvegarde\liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL G:\Sauvegarde\list*.txt pause ET OUAIS HIGA ! SI TU METS DES CHEMINS COMPLETS, METS LES PARTOUT, PEON ! Je pense que c'est bon, vu qu'il foire DANS la boucle. Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 2 avril 2010 Auteur Partager Posté(e) le 2 avril 2010 Donc après plusieurs tentative et quelques modification.... Cela ne marche toujours pas Voici ce que j'ai fait : @echo on DEL H:\Sauvegarde\*.* /F /Q /S pause dir G:\Sauvegarde\WITHSERVER_D_Drive* /O:D /B > G:\Sauvegarde\liste.txt dir G:\Sauvegarde\WITHSERVER_C_Drive* /O:D /B > G:\Sauvegarde\liste1.txt pause FOR /F "skip=1" %f in (liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (liste1.txt) DO xcopy %f H:\Sauvegarde\ DEL G:\Sauvegarde\list*.txt pause Grace au pause j'ai pu voir que c'est au moment de rentrer dans la boucle qu'il coupe. Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
skaman85 Posté(e) le 2 avril 2010 Auteur Partager Posté(e) le 2 avril 2010 pauseFOR /F "skip=1" %f in (G:\Sauvegarde\liste.txt) DO xcopy %f H:\Sauvegarde\ FOR /F "skip=1" %f in (G:\Sauvegarde\liste1.txt) DO xcopy %f H:\Sauvegarde\ ET OUAIS HIGA ! SI TU METS DES CHEMINS COMPLETS, METS LES PARTOUT, PEON ! Je pense que c'est bon, vu qu'il foire DANS la boucle. Donc toujours pareil, en faite au moment ou il veut exécuter la boucle il se trouve dans C: il faudrait qu'il soit dans G:... car il ne trouve pas ce qu'il y a à copier Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.