Aller au contenu

[SERVEUR] .bat pour copie image système [ RESOLU ]


skaman85

Messages recommandés

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

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

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 :D)

Sinon, dans le premier cas, je verrais plus un script en VBscript ...

Lien vers le commentaire
Partager sur d’autres sites

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 :D)

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

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 :transpi:

Lien vers le commentaire
Partager sur d’autres sites

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 :byebye:

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

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 :byebye:)

@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

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 :smack:

Lien vers le commentaire
Partager sur d’autres sites

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

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

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

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

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

  • 3 semaines après...

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

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

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

Donc après plusieurs tentative et quelques modification.... Cela ne marche toujours pas :chinois:

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 :dd:

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

Donc après plusieurs tentative et quelques modification.... Cela ne marche toujours pas :chinois:

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

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\

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...