17. januar 2005 - 14:53Der er
21 kommentarer og 1 løsning
Xcopy logfile
Jeg skal have oprettet en logfil over mit backup script, så jeg kan tjecke hver morgen om den har fået alle filerne med..
Det eneste jeg ved at at man skal skrive ">navn.txt" i sit script og så bliver alt printet til den fil.. Men der står ikke tidspunkt osv. i filen, og den har egentlig ikke ret mange oplysninger, og hvis nu der sker en fejl kommer det så til at stå deri ?
Okay her er scriptet, til oplysning står L for Lige uge og U for Ulige uge. Jeg vil bare gerne have at det kan være nemt lige at tjecke om morgenen om scriptet har lavet nogle fejl.
@echo off set kilde=\\1.1.1.1\mappe\ set Destination=C:\Backup\mappe\ If not exist %Destination%kontrol.bat goto first :videre call %Destination%kontrol.bat goto nydag :videre2 echo set nr=%nrny% >%Destination%kontrol.bat del %Destination%%nrny%\*.* /f /s /q rmdir %Destination%%nrny% /s /q xcopy %kilde%*.tps %Destination%%nrny%\*.tps /y /s /I >%Destination%Log.txt goto end
:first if not exist %destination% md %destination% echo set nr=sun >%Destination%kontrol.bat goto videre
:nydag if %nr%==SøndagL goto SøndagL if %nr%==MandagL goto MandagL if %nr%==TirsdagL goto TirsdagL if %nr%==OnsdagL goto OnsdagL if %nr%==TorsdagL goto TorsdagL if %nr%==FredagL goto FredagL if %nr%==LørdagL goto LørdagL if %nr%==SøndagU goto SøndagU if %nr%==MandagU goto MandagU if %nr%==TirsdagU goto TirsdagU if %nr%==OnsdagU goto OnsdagU if %nr%==TorsdagU goto TorsdagU if %nr%==FredagU goto FredagU if %nr%==LørdagU goto LørdagU
Jeg synes jeg har set det script før ;-) Du kan tilføje et /F til xcopy-linien. Hvis du vil have tid og dato ind i log-filen, kan du tilføje følgende i starten af programmet:
Og jo vil egentlig bare have Dato og tid på hver fil den kopiere, og jeg går ud fra at den skriver hvis den laver en fejl eller der er en fil som den ikke kan kopiere?
Det dato/Time, skal det bare skrives øverst i scriptet ??
Du kunne også vælge /L istedet: Displays files that would be copied.
Angående date og time: Skriv dette istedet: echo %date% echo %time%
Med denne løsning får du angivet tid og dato for starten. Ved at sætte disse linier ind til sidst, får du også tid og dato for afslutningen. Jeg tror ikke du kan få en fortløbende tids-stempling. Men Xcopy skriver fortløbende hvis en kopiering mislykkes.
Men det med datoen og tiden virker ikke.. når jeg sætter dem ind som det første kan jeg se at den sætter datoen og tiden med det kommer ikke med i logfilen,.
Ja, du har ret -- igen. Jeg havde ikke fået læst dine ændringer i scriptet ordentligt. Sådan her så:
Den første pipe til logfilen skal være med 1 '>'. De efterfølgende skal være med 2 for at indikere at filen ikke skal overskrives, men blot tilføjes noget. Så i dit oprindelige script:
Tilføj mellem 3. og 4. linie: echo %date% >%Destination%Log.txt echo %time% >>%Destination%Log.txt
Erstat 12. linie (i det oprindelige) med: xcopy %kilde%*.tps %Destination%%nrny%\*.tps /y /s /I /F >>%Destination%Log.txt
Men fandt ud af at der skal være 2 ">" i første pipe også, ellers laver den en ny logfil pr. dag.. der skal helst være en logfil for 14 dage af gange.. så det er næste projekt.. altså at logfilen bare skal slettes hver fjortens dag :)
Så giv lige et svar så du kan få dine velfortjente point !
Et forslag til hvordan du løser problemet med sletning af log-fil: hvad nu hvis du faktisk lavede én logfil pr. backup og så gemte den inde i selve dags-mappen. Så bliver den jo automatisk slettet når du 14 dage senere sletter mappen med indhold.
okay tak, men det kan være du kan tjene nogle point alligevel :D
Jeg skal nemlig tage backup af 52 computere, og det kommer der jo ret mange logfiler ud af.. og det koster ret langt tid at tjecke dem efter hver morgen.. men kan man ikke få et program til analysere en logfil og fortælle om der er sket fejl i den ?
Ellers var det slet ikke en dårlig ide du kom med der til sidst :P
Med min allersidste løsning: Så skal man dog nok flytte tids-stemplingen ned under :videre2 (da du ellers mister den, den dag loggen slettes).
Det kunne iøvrigt være en ide at supplere xcopy-linien med et /c (så kopieringen fortsætter selvom der opstår fejl)
Jeg har ikke et bud på, et program der kan analysere loggen. Men det kan da givetvis laves. Man skal bare vide hvad den skriver ved fejlene og så lave en søgning herpå. En primitiv metode kunne jo være simpelthen at læse dem ind i en teksteditor og så søge på fejlmeddelser.
Pokkers, jeg kommer lige til at se, at fejlmeddelserne fra xcopy ikke bliver redirected til filen, men kun til skærmen. I hvert fald hvis destinations-drevet ikke findes. Hvilke fejlmeldinger er det, du gerne vil kunne checke for?
Ved drevet fuld, kommer fejlen med i loggen, men xcopy stopper op og beder dig om at sætte en ny disk i.
Jeg undskylder at jeg kegler lidt rundt her, men det er lidt svært at teste tingene, når man ikke har et ordentligt miljø at teste i. Hvilke fejl er relevante for dig?
comp %kilde%*.tps %Destination%%nrny%\*.tps /l >>%Destination%Log.txt lige efter xcopy-linien, løser noget af problemet. Den slutter bare af med at bede brugeren bekræfte at man ikke vil sammenligne flere filer. Og programmet lukker ikke ned før dette er bekræftet. Kan du leve med det?
Hvis ja, så løser det måske også dit problem med automatisk log-læsning. Idet comp melder "ikke" for hver fil, der er fejl i. Lav et script med:
findstr /s "ikke" Log.txt pause >nul
Angiver de linier i Log.txt hvor teksten "ikke" findes. Hvis du vil checke flere log.txt filer på én gang kan man lave wildcards (/s parameteren angiver at checker også i undermapper).
Jeg har ikke lige haft tid til at kigge herinde de sidste par dage, men det kører ellers kanon den comp kommando.
Men hvor for nogle ting siger den ellers end "ikke"..
Jeg havde tænkt mig at den skulle komme med fejlmelding hvis filen ikke kunne kopieres havde samme størrelse osv osv.. bare alle mulige fejl.. Men det kan være "ikke" er dækket ind over det hele ?
Det med at programmet ikke lukker ned kan man ikke bruge en kommando så den gør det .. /n måske ?...
Husk lige at lave et svar, du skal jo have dine points :D
/n bruges desværre til noget andet, og der er desværre så vidt jeg ved ikke en parameter der slår spørgsmålet fra.
Comp siger -Filerne er ens. (når de er ens - når alt er i orden) -Filen xxx kan ikke findes/åbnes (når der ikke er nogen fil på kilde/dest) -Filerne har ikke samme størrelse (når dette er tilfældet) -Sammenligningsfejl ved LINJE x fil1 = xx fil2 = yy (når der er nogle tegn der adskiller sig fra hinanden)
Angående det sidste tilfælde, ser det ud til at findstr skal udvides lidt: findstr /s "ikke" Log.txt findstr /s "fejl" Log.txt pause >nul
Jeg lægger svar nu, da vi vist efterhånden har bevæget os udover det tidligere spørgsmål. :-)
Du kan ikke samle findstr til én linie. Men i 99,99% af alle tilfældene vil den jo nok slet ikke finde noget (da de fleste kopieringer jo er vellykkede). Derfor tror jeg ikke at det tab af overskuelighed vil være stort. Og du kan jo bare samle de 3 linier i et nyt script, så har du stadig kun én kommando at skulle indtaste (nemlig navnet på det lille test-script).
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.