Loginscript Feststellen wann eine Routine das letzte Mal gelaufen ist
Hallo Zusammen!
brauche eure Hilfe stehe echt auf dem Schlappen...
DANKE IM VORRAUS!
Also Situation:
WIr haben ein Verzeichnis das ca. 50000 Datein (~2,5 GB) dieses Verzeichnis enthält Firmenkonfigurationen für ein CAD Programm.
Diese Daten sollen für alle Anwender des Programms gleich sein.
Damit wir uns nicht unseren Fileserver künstlich in die Knie zwingen, soll dieses Verzeichnis lokal auf den Rechnern (ca. 80 Betroffene Rechner)
liegen, auf denen das Programm installiert ist.
Also wir wollen das dieses Lokales Verzeichnis auf dem Rechner mit einem Verzeichnis auf dem Server abgeglichen wird. (per Logonscript)
Systeme: Windows 2003 SP2 , Windows XP SP3
Problem:
Da dieses abgleichen in etwa 120 Sekunden in Anspruch nimmt und auch nur sporadisch Daten geändert werden,
würde es reichen wenn dieser Abgleich einmal die Woche läuft.
Also der Abgleich funktioniert soweit, nur das mit dem einmal die Woche, habe ich null plan wie ich das bewerkstelligen soll...?
Hat da jemand eine Idee?
Hatte ich schon danke im vorraus gesagt?
Ageers
brauche eure Hilfe stehe echt auf dem Schlappen...
DANKE IM VORRAUS!
Also Situation:
WIr haben ein Verzeichnis das ca. 50000 Datein (~2,5 GB) dieses Verzeichnis enthält Firmenkonfigurationen für ein CAD Programm.
Diese Daten sollen für alle Anwender des Programms gleich sein.
Damit wir uns nicht unseren Fileserver künstlich in die Knie zwingen, soll dieses Verzeichnis lokal auf den Rechnern (ca. 80 Betroffene Rechner)
liegen, auf denen das Programm installiert ist.
Also wir wollen das dieses Lokales Verzeichnis auf dem Rechner mit einem Verzeichnis auf dem Server abgeglichen wird. (per Logonscript)
Systeme: Windows 2003 SP2 , Windows XP SP3
Problem:
Da dieses abgleichen in etwa 120 Sekunden in Anspruch nimmt und auch nur sporadisch Daten geändert werden,
würde es reichen wenn dieser Abgleich einmal die Woche läuft.
Also der Abgleich funktioniert soweit, nur das mit dem einmal die Woche, habe ich null plan wie ich das bewerkstelligen soll...?
Hat da jemand eine Idee?
Hatte ich schon danke im vorraus gesagt?
Ageers
Please also mark the comments that contributed to the solution of the article
Content-Key: 107518
Url: https://administrator.de/contentid/107518
Printed on: April 19, 2024 at 19:04 o'clock
12 Comments
Latest comment
Hallo aGeers!
Per Batch etwa so (vor Deinem bisherigen Script platzieren):
Grüße
bastla
Per Batch etwa so (vor Deinem bisherigen Script platzieren):
@echo off & setlocal
set G=%temp%\GetWeekDay.vbs
>>%G% echo WScript.Echo WeekDayName(WeekDay(WScript.Arguments(0)),True)
for /f %%i in ('cscript //nologo %G% %date%') do set "WTag=%%i"
if /i "%WTag%" neq "Do" goto :eof
echo Synchronisation wird vorgenommen ...
bastla
Servus,
so als Denkansatz - auch wenn es mit deiner Frage nicht so richtig zusammenhängt (2.5 GB in 120 sek.)
Sind die Dateien bereits gezippt? - Wahrscheinlich ja.
Kennst du Robocopy /?
Ich bezweifele - aber mangels Wissen ist das auch nur in den Raum geworfen - dass die Zeile wirklich stimmt:
An deiner Stelle - oder besser - bei uns - werden solche "Konfig" Jobs nachts erledigt - wobei 120 sek. ja auch nicht die Welt sind.
Sprich WOL - robocopy und shutdown.
Gib mal Feedback, ob das bei euch so passen könnte und ob obige Zeilen stimmen.
Mit den nur alle x tage wär ich vorsichtig, "irgendeinen" Grund und Sinn müssen die Änderungen ja haben und dann arbeitet jemand x Tage mit einem alten Stand - whatever - wär mir zu heikel.
Gruß
edit @ Bastla:
"So" ähnlich hatte ich das mal vor ein paar Jahren und irgendwann ist bei uns rausgekommen, dass Kollegin x - Freitags nie da war..
/edit
so als Denkansatz - auch wenn es mit deiner Frage nicht so richtig zusammenhängt (2.5 GB in 120 sek.)
Sind die Dateien bereits gezippt? - Wahrscheinlich ja.
Kennst du Robocopy /?
Ich bezweifele - aber mangels Wissen ist das auch nur in den Raum geworfen - dass die Zeile wirklich stimmt:
würde es reichen wenn dieser Abgleich einmal die Woche läuft.
An deiner Stelle - oder besser - bei uns - werden solche "Konfig" Jobs nachts erledigt - wobei 120 sek. ja auch nicht die Welt sind.
Sprich WOL - robocopy und shutdown.
Gib mal Feedback, ob das bei euch so passen könnte und ob obige Zeilen stimmen.
Mit den nur alle x tage wär ich vorsichtig, "irgendeinen" Grund und Sinn müssen die Änderungen ja haben und dann arbeitet jemand x Tage mit einem alten Stand - whatever - wär mir zu heikel.
Gruß
edit @ Bastla:
"So" ähnlich hatte ich das mal vor ein paar Jahren und irgendwann ist bei uns rausgekommen, dass Kollegin x - Freitags nie da war..
/edit
Hallo aGeers!
Ich würde den umgekehrten Weg vorschlagen: Eine Datei bei jeder Synchronisation als "Timestamp" erstellen und deren Alter mit einem Mindestalter vergleichen - etwa so:
Grüße
bastla
Ich würde den umgekehrten Weg vorschlagen: Eine Datei bei jeder Synchronisation als "Timestamp" erstellen und deren Alter mit einem Mindestalter vergleichen - etwa so:
@echo off & setlocal
set "Timestamp=D:\Timestamp.txt"
set /a MinAlter=7
if not exist "%timestamp%" goto :DoIt
set C=%temp%\CheckOld.vbs
>%C% echo WScript.Echo Datediff("d",CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Date)
for /f %%i in ('cscript //nologo %C% "%Timestamp%"') do set /a Alter=%%i
if %Alter% lss %MinAlter% goto :eof
:DoIt
>"%Timestamp%" echo %date%
echo Synchronisation wird vorgenommen ...
bastla
Servus,
Halbe Turnschuhmethoden werden hier strikt abgelehnt nud auch keine Tipps dafür gegeben
Vollautomatisches zippen ist wirklich nicht das Thema.
Bastla hat (wie immer - wie üblich) eine gute Umsetzung - nur frage ich mich wirklich, ob es sich wirklich rentiert x Tage zu warten und damit natürlich viel mehr Änderungen zu synchronisieren, als nötig.
Ergo ist tägliches abgeleichen im Endeffekt schneller.
Und nur um einen etwas anderen Ansatz anzusprechen:
Grundsätzlich bin ich ein Fan von "Dokumentation" - gerade wenn es .ini Files sind.
Steht diese "Dokumentation" auf dem Server unter Freigabe und jeder, der etwas ändert schreibt rein was und wann - kann die auch ausgelesen und verarbeitet werden"
Gruß
Robocopy kenne ich und darüber läuft das auch...
dann bitte mal dein Skript hier zwischen < Code> und < /code> (Ohne das Leerzeichen hinter <) einstellen.Gezippt sind Sie nicht, da die Erstsync bei der Installation abläuft nach halber Turnschuh methode und
Änderungen danach zu klein sind um ständig zippen und entzippen => ABMHalbe Turnschuhmethoden werden hier strikt abgelehnt nud auch keine Tipps dafür gegeben
Vollautomatisches zippen ist wirklich nicht das Thema.
Bastla hat (wie immer - wie üblich) eine gute Umsetzung - nur frage ich mich wirklich, ob es sich wirklich rentiert x Tage zu warten und damit natürlich viel mehr Änderungen zu synchronisieren, als nötig.
Ergo ist tägliches abgeleichen im Endeffekt schneller.
Und nur um einen etwas anderen Ansatz anzusprechen:
Grundsätzlich bin ich ein Fan von "Dokumentation" - gerade wenn es .ini Files sind.
Steht diese "Dokumentation" auf dem Server unter Freigabe und jeder, der etwas ändert schreibt rein was und wann - kann die auch ausgelesen und verarbeitet werden"
fc \\server\freigabe\version.ini %programfiles%\meincadtool\version.ini && goto end
echo Aenderungen gefunden
robocopy ....
:end
echo nix zu tun
Gruß
Servus,
Gruß
- Schau dir bitte und editiere deinen Beitrag, das ist besser zu lesen.
- Besorg dir vom W2k3 Server das reskit und benutze das Xcalcs als exe nicht die .vbs Geschichte.
Gruß
Hallo aGeers!
Dieses Script übernimmt eine Datei als Parameter (VBS nummeriert ab 0, daher "WScript..Arguments(0)"), holt deren Änderungsdatum und vergleicht es mit dem aktuellen Datum ("Date"), wobei die Differenz, wie richtig erkannt, in Tagen berechnet und schließlich ausgegeben ("WScript.Echo") wird - so kann es der Batch dann übernehmen.
Die Punkte dienen nicht dem Fortsetzen der Zeile (das wäre in VBS "_"), sondern trennen Objekte, Methoden, Eigenschaften (ersparen allerdings tatsächlich einige Zeilen, da keine Zwischenvariablen erstellt werden müssen) ...
Info zu "lss" findest Du auch in der Online-Hilfe ("if /?")
Grüße
bastla
Habe ich das soweit kapiert?
Grundsätzlich: ja - ein paar Kleinigkeiten beschreibe ich kurz noch etwas genauer:01.@echo off & setlocal
Soweit klar Echo abschalten und Aktuelles Ausführ Verzeichnis auf Lokal stellen
"setlocal" bezieht sich auf Variablen und sorgt dafür, dass Änderungen an bestehenden Variablen bzw neu erstellte Variable nur für diesen Batch (bzw bis zum nächsten "endlocal") gelten sollen - so bleiben keine unerwünschten "Reste" ...Soweit klar Echo abschalten und Aktuelles Ausführ Verzeichnis auf Lokal stellen
03.set /a MinAlter=7
Das "/a" müsste tatsächlich nicht sein - soll nur zeigen, dass %MinAlter% eine numerische Variable ist.06.set C=%temp%\\CheckOld.vbs
=> Setze Varibale C auf das Temp Verzeichnis und auf die Checkold.vbs
In der Datei "CheckOld" im Temp-Verzeichnis des aktuellen Users wird gleich nachher durch ein einfaches "echo" mit Umleitung in diese Datei ein kleines VBScript erstellt ...=> Setze Varibale C auf das Temp Verzeichnis und auf die Checkold.vbs
07.>%C% echo WScript.Echo Datediff(\"d\",CreateObject(\"Scripting.FileSystemObject\").GetFile(WScript.Arguments(0)).DateLastModified, Date)
... da isses schon: WScript.Echo Datediff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Date)
Die Punkte dienen nicht dem Fortsetzen der Zeile (das wäre in VBS "_"), sondern trennen Objekte, Methoden, Eigenschaften (ersparen allerdings tatsächlich einige Zeilen, da keine Zwischenvariablen erstellt werden müssen) ...
Info zu "lss" findest Du auch in der Online-Hilfe ("if /?")
Grüße
bastla
Hab ich da Ehrgeiz geweckt?
Moin,
*grübel*
- ich bin Ehrlich aber nichtGeizig
Bin für jede Verbessung zu haben!
Dann mal ein Tipp, um das potential zu entdecken:
REM
echo Start >>c:\log.txt
echo %time% >>c:\log.txt
:ADT2009USERSYNC
IF %ADT2009USERSYNC% == 0 goto Next
ECHO ADT2009USERSYNC AKTIV
if not exist "C:\Programme\ACD-A2009\ACAD.EXE" goto next
if not exist "C:\ADTDATEN\" goto next
IF EXIST C:\Programme\ACD-A2009\timestamp.TXT goto next
"%TEMP%\LOGON\ROBOCOPY.exe" "\\Servername\Cad\Programme\ADT2009\ADTDATEN" "c:\adtdaten" /r:1 /w:1 /S /Z /LOG:C:\Programme\ACD-A2009\ADTDATEN.log
echo kopieren beendet >>c:\log.txt
echo %time% >>c:\log.txt
CALL "%TEMP%\LOGON\CPAU.exe -file \\domaenenname\sysvol\Domaenenname\scripts\parts\CPAU\ADT2009ordner.txt -dec -profile /WAIT
ECHO INFORMATIONSDATEI FUER DAS ERMITTELN DES LETZTEN
SYNC`S!>C:\Programme\ACD-A2009\timestamp.TXT
ECHO NIEMALS LOESCHEN!!!>>C:\Programme\ACD-A2009\timestamp.TXT
:next
echo Rechte setzen beendet>>c:\log.txt
echo %time% >>c:\log.txt
Das muss gemacht werden, obwohl entsprechende Berechtigung auf dem Serververzeichnis gesetzt sind.
Chef: machen ich:is schon Chef: Trotzdem>
? Wenn deine Aussage stimmt - dazu ja das setzen der "Zeitstempel" c:\log.txtChef: machen ich:is schon Chef: Trotzdem>
Ist das xcacls der Timewaster - und der (xcacls Teil) ist eigentlich unnötig - zumindestens als dauerläufer.
Hast du mittlerweile das xcacls?
Da bei uns jede W2k3 CD "manipuliert" ist *lach* - nein das nennt man ja richtigerweise optimiert/Slipstreamed ist - weiß ich ehrlich grad nicht, ob die im Reskit oder schon dabei ist.
Du setzt in dem Teil da unten - Rechte - die eigentlich eh vorhanden sind - in meinen Augen ist das flüssiger als flüssig, überflüssig
Das kannst du aber auch mit xcalcs herausfinden - einfach mal einen Dump der Rechte vor dem kopieren und danach - und du wirst keine Unterschiede finden.
Und wenn der xcaclss Teil der "lahme" ist - dann kannst du das kopieren ja auch wieder täglich machen.
DANKE!
Ageers
T-MO