|
| fourmix | Posté le 20/08/2004 @ 11:05 |
Petit astucien
34 Messages
| Bonjour,
je voudrais automatiser la sauvegarde de mon Répertoire "mes documents" sur un serveur.
Je pense que faire un batch, lancé par le planificateur des tâches peut faire l'affaire.
Je ne connais pas encore très bien les batch. J'ai un début de .bat :
xcopy D:\Mes documents Sylvain\*.* \\nomserveur\sylvain\*.* /D/E/F/H/R/K/Y
Ce que j'aimerais faire c'est au lieu d'écraser à chaque fois le Répertoire précédent, créer des Répertoires différents, en fonction de la date, du style \\nomserveur\sylvain\save_04_08_19 et \\nomserveur\sylvain\save_04_08_20.
Mais pour ne pas encombrer le serveur, chaque jour impair s'écraserai. Je m'explique le save_04_08_21 écraserait le save_04_08_19. Idem pour les jours pairs. De cette façon j'ai tjs 2 Répertoires save, ce qui n'encombre pas le serveur, et 2 sauvegardes pour plus de sécurité.
Donc comment avoir la date dans un variable et comment utiliser celle ci pour la création d'un nom de Répertoire?
Merci de votre aide.
Sylvain
|
| |
| |
| Publicité |
|
|
| Arsenic | Posté le 20/08/2004 à 12:19 |
Astucien
5977 Messages
| C'est infernal, le traitement de la variable de date sous Dos.
Quelque tuyaux chez Laurence Soucy, mais bon, vraiment pas simple:
[url]http://home7.inet.tele.dk/batfiles/[/url]
C'est pourquoi je préfère me servir d'utilitaires Dos dédiés gérant la date, en particulier fdate.
Un exemple sur ma page perso si ça t'inspire:
[url]http://perso.wanadoo.fr/strychnine/dossave.html[/url]
Ah, avant que j'oublie: mets "Mes documents.." entre guillemets ou avec un tilde en nom court Dos au 6ème caractère, sans quoi tu vas avoir des misères... |
| |
|
| Torrent | Posté le 20/08/2004 à 14:10 |
Astucien
1076 Messages
| Je crois que tu as un serveur Linux. Linux sait faire ca tout seul |
| |
|
| fourmix | Posté le 20/08/2004 à 15:01 |
Petit astucien
34 Messages
| Salut et merci.
pour Torrent : Mon serveur est sous win malheureusement.
pour Arsenic : J'ai fait ce script en test qui marche: (copier à 95% depuis un site, j'ai du changer qques paramètres car le prg utilisait la dtae en américain je pense)
@echo off
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
set mm=%%b
set dd=%%a
set yyyy=%%c)
xcopy D:\"Mes documents Sylvain\*.*" "C:\test\save_%yyyy%_%mm%_%dd%\*.*" /E/F/H/R/K
Par contre quand j'utilise l'option /EXCLUDE ça ne marche pas.
je fais xcopy D:\"Mes documents Sylvain\*.*" "C:\test\save_%yyyy%_%mm%_%dd%\*.*" /EXCLUDE:Logiciels /E/F/H/R/K avec Logiciels qui est un Répertoire (volumineux et pas vraiment important)
Et autre pbl : quand je fais xcopy D:\"Mes documents Sylvain\*.*" "\\nomserver\sylvain\save_%yyyy%_%mm%_%dd%\*.*" /E/F/H/R/K, ça ne marche pas parce que je ne suis pas logguer sur le serveur. Existe-t-il qqch du style sylvain@nomserver comme pour un serveur FTP?
Et comment faire attendre le prg, pour que je rentre le mdp et que le prg se relance pour faire la copie une fois le mdp validé?
Merci bcp en attendant
Sylvain |
| |
|
| Arsenic | Posté le 20/08/2004 à 15:14 |
Astucien
5977 Messages
| Je ne sais par trop.
Concernant la syntaxe "tokens", je l'ai aussi vue sur le web, mais bon, je ne la pratique pas.
Sur le paramètre d'exclusion, je crois me souvenir, mais je ne suis pas sûr, que la syntaxe est "indirecte".
/ECXLUDE:"chemin de toto"\toto.txt
où c'est le fichier d'exclusion toto lui-même qui contient par exemple \rep, excluant tout fichier dont le chemin est sous le Répertoire \rep.
Enfin, à propos du serveur, je ne sais pas comment est boutiqué le tien. En principe, un batch planifié te demandera, la première fois, ton identité et mdp de connexion à ce serveur, sous-entendant bien sûr qu'il existe préalablement sur le serveur des droits pour les paramètres en question.
Par exemple, pour bidouiller de mes postes Win à mon serveur Linux, je n'ai aucun moyen de gérer de nouveaux mdp, qui sont gérés par un progiciel propriétaire, ce qui m'oblige à me logger avec l'identifiant et le mdp du serveur proprement dits, comme si je travaillais directement dessus. |
| |
|
| Arsenic | Posté le 20/08/2004 à 15:21 |
Astucien
5977 Messages
| D'après Rob van der Woude:
[url]http://www.robvanderwoude.com/index.html[/url]
| /EXCLUDE:filename Excludes the files listed in the specified file from the copy operation. The exclusion file can have a list of exclusion patterns (one per line, no wild card characters are supported). If any exclusion pattern in the file matches any part of the path of a subject file, that file is not copied.
Examples
Copy only files older than Christmas day 2000:
FOR /F "tokens=1* delims=:" %%A IN ('XCOPY *.* D:\Mydir /D:12-25-2000 /H /I /L /R ^| FIND ":"') DO (>>%TEMP%.\exclude.lst ECHO.%%B)
XCOPY *.* D:\Mydir /EXCLUDE:%TEMP%.\exclude.lst /H /I /R
Delete files created or modified after Christmas 2000:
FOR /F "tokens=1* delims=:" %%A IN ('XCOPY *.* D:\Emptydir /D:12-26-2000 /H /I /L /R ^| FIND ":"') DO DEL /F %%B
|
|
| |
|
| fourmix | Posté le 20/08/2004 à 16:35 |
Petit astucien
34 Messages
| Alors les nouvelles :
J'ai résolu mes 2 pbls, a savoir l'exclusion et l'accès au serveur
Tu as raison l'option EXCLUDE renvoie à un fichier comportant des lignes. J'ai donc créer un fichier exclusion.txt qui contient les noms des Répertoires à ne pas sauver (un par ligne)
(Attention à mettre ce fichier au même endroit quer le batch)
Pour l'accès au serveur, il faut que le login et les mdp utilisé sur les 2 machines soientr le même et ça marche (ou alors se logguer une fois sur le serveur via "les favoris réseau" par exemple)
Bon pour le moment je n'arive à faire marche cette tâche que sosu c: Et pas D/, petit pbl à résoudre.
@echo off
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
set mm=%%b
set dd=%%a
set yyyy=%%c)
echo Ceci est la sauvegarde automatisée de vos données personnelles sur le serveur.
echo Nous sommes le %yyyy% %mm% %dd%.
xcopy D:\"Mes documents Sylvain\*.*" "\\nomserveur\Equipe technique\Sylvain\save_%yyyy%_%mm%_%dd%\*.*" /EXCLUDE:exclusion.txt/E/F/H/R/K
Je vais réfléchir à l'éventuelle utilisation de l'option /D et lancer via le planificateur des tâches une sauvegarde toutes les heures (comme ça tous mes fichiers seront sauvés le matin et dans la journés, seuls les fichiers modifiés seront écrasés sur le serveur)
[cool]Le + gros du prg est fait![bigsmile]
Maintenant, comment analyser les noms des Répertoires existant sur le serveur et ecraser le save_2004_08_19 par le save_2004_08_21 (par exemple) et le 18 par le 20???
bon w-e |
| |
|
| Arsenic | Posté le 20/08/2004 à 16:43 |
Astucien
5977 Messages
| | Maintenant, comment analyser les noms des Répertoires existant sur le serveur et ecraser le save_2004_08_19 par le save_2004_08_21 (par exemple) et le 18 par le 20???
bon w-e
|
Ben moi, je procède comme je te l'ai dit avec fdate, il suffit de faire une opération dans ta variable jour, appelons-là "%JOURJ%"
Il suffit de calculer à partir de %JOURJ% la variable correspondant à, disons 2 jours avant, appelons-la %JOURJ2%.
Maintenant, avant mon batch, je fais une conditionnelle:
IF EXIST "chemin"%JOURJ2%.TOTO DEL (ce fichier) |
| |
|
| RPG3000 | Posté le 29/08/2004 à 19:58 |
Petit astucien
196 Messages
| Salut!
Pour te siiiiiiiiiiiiiiiiimplifier la vie, va sur astase.com, télécharge PowerBatch. Il te fourni des outils pour générer des codes et il possède un système de teste intégré sans bezoin ke ton batch soit enregistré. Il a un assistant XCOPY avec toute les options.
Si t'es pas fort, y'a un tutorial, avec PowerBatch. Un tutos facil à comprendre. J'ai appris le batch avec, en fait c assez facil.
@++ |
| |
|
| Arsenic | Posté le 30/08/2004 à 13:31 |
Astucien
5977 Messages
| Ah non, ça, c'est vraiment "une réponse à bon marché", histoire de dire quelque chose.
Je veux bien croire que Power batch facilite l'écriture de fichiers des commandes via un assistant, et même qu'il sait compiler les batch en com pour ceux que ça intéresse.
Mais je ne vois pas par quelle magie il suffirait à gérer, du seul fait de son interface ajoutée, ce que Dos fait très mal, savoir la gestion de la variable de date.
|
| |
|
|
| Haut de la page |