Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

For R Such-Richtung umgekehrt?!

Frage Entwicklung Batch & Shell

Mitglied: manufactum

manufactum (Level 1) - Jetzt verbinden

08.02.2010 um 10:21 Uhr, 3117 Aufrufe, 4 Kommentare

Hallo Admins,

ich habe mir ein Batch-Skript geschrieben, daß mit Drivesnapshot täglich Backups unseres Servers erstellt. Alle 7 Tage wird ein Vollbackup erstellt, dazwischen inkrementelle. Das Skript löscht automatisch nach 14 Tagen die Backups der vorletzten Woche.

Um die inkrementellen Backups immer vom aktuellsten Vollbackup zu erstellen soll es sich jeweils das aktuellste Hashfile dazu aus den Base-Ordnern suchen.

Ordnerstruktur:

server2_C\
2010-01-31-base
2010-02-01
2010-02-02
2010-02-03
2010-02-04
2010-02-05
2010-02-06
2010-02-07-base
2010-02-08
usw. max 14

Diese Zeile hat dafür bisher immer wunderbar funktioniert:

for /R "%SnapshotsBaseDir%\server2_%vol1%" %%f in (full.hsh*) do set LastHashFile=%%f

echo Gewähltes Hashfile: %LastHashFile% >"c:\skripte\test.log"

Seit neuestem durchsucht das Skript aber reproduzierbar den Ordner nicht mehr aufsteigend, sondern absteigend. D.h. die Varibale "LastHashFile" hat als Inhalt zuletzt das ältere Hashfile.

Auf einem anderen Rechner, in einer Testumgebung, funktioniert die Zeile tadellos...

Meine Fragen nun: Woher kommt die Suchrichtungsänderung? Und wie ändere ich die wieder?

Vielen Dank für Eure Hilfe!!
Mitglied: Biber
08.02.2010 um 10:49 Uhr
Moin manufactum,

willkommen im Forum.
Die FOR /R-Anweisung durchsucht meines Wissens zwar rekursiv einen Verzeichnisbaum, aber nicht in einer gewährleisteten Reihenfolge.
Wenn es also vorher "eigentlich immer" gepasst hat... Zufall, Schicksal, aber auf jeden Fall nicht einklagbar.

Ich sehe zwei (oder gar drei) Strategien, wie du dein Ziel erreichen kannst, je nach vorliegenden Rahmenbedingungen:

  • falls die Ordner jeweils direkt bei der Sicherung/am tag der Sicherung angelegt werden, dann kannst du das Alter (bzw. die Reihenfolge der Ordner) aus dem "DIR /TC -Erstellungsdatum ermitteln. Wenn denn im jüngsten Ordner auch das jüngste Hash-File ist

  • wenn das Anlegen der Ordner NICHT jeweils am Tag der Sicherung erfolgt, aber die Namenskonvention wie oben durchgängig eingehalten wurde, dann kannst du auch aus den Dateinamen das älteste/jüngste Unterverzeichnis ermitteln- wieder gilt: wenn denn auch im jünsten Verzeichnis das gesuchte Hashfile ist.

  • falls das jüngste und gesuchte Hashfile "irgendwo" in dieser Struktur liegt und wirklich nur daran erkennbar ist, dass es halt das jüngste von allen ist......dann musst/kannst du dem FOR /R -die Wahl der Reihenfolge überlassen, denn dann musst du ja ohnehin vom ersten bis zum letzten gefundenen Hashfile vergleichen "Hat das ein Datum größer als das bisher bekannte Jüngste)

Falls es der Fall 3 ist -hashfile ist irgendwo- dann wäre noch wichtig zu wissen, wieviel zeitlicher Abstand zwischen den Datei-Datumswerten der hashfiles üblicherweise liegt. Per Batch-Datumsvergleich kannst du normalerweise nur auf Stunden/Minuten-Genauigkeit gehen,; wenn Sekunden relevant sind, dann sollte der Datumsverglich mit VBScript erfolgen.

Grüße
Biber
Bitte warten ..
Mitglied: manufactum
08.02.2010 um 12:26 Uhr
Hallo Biber,

danke für Deine Antwort.

Strategie Nr.1 erscheint mir am praktikabelsten. Habe das mal so versucht:

for /f "skip=7" %%i in ('dir /b /on /ad "%SnapshotsBaseDir%\server2_%vol1%\20*"') do for /R %%i %%f in (full.hsh*) do set LastHashFile=%%f

Beim "dir"-Befehl gibt es sicher mehrere mögliche Wege. Die Ordner sind alphabetisch geordnet und jeder Ordner wird bei der Sicherung durch das Skript erstellt.

Irgendwie klappt die Verknüpfung von "erst ordnen" dann "suchen und Variable festlegen" aber noch nicht. Weißt Du eine Lösung?

Vielen Dank für Vorschläge!!
Bitte warten ..
Mitglied: Biber
08.02.2010 um 12:46 Uhr
Moin manufactum,

warum hast du denn den Ehrgeiz, diese 2 Befehle in eine zeile zu trümmern?

Der DIR-Befehl kennt auch einen Schalter /B wie /Billich.
Damit bekommst du - in Verbindung mit der Sortierung nach Namen oder Datum ) nur die Ordnernamen in der Verzeichnisebene "%SnapshotsBaseDir%\server2_%vol1%\20*" heraus (ohne Vorspann, ohne Summenzeile... einfach nur 11 Zeilen für 11 Ordner)
Kannst dir also das "skip=7" sparen.

Wenn du die Ausgabe dieser sortierten Liste mit einem FOR/F-Befehl durchläufst, dann gilt auch hie "Okay, ich merke mir jeden Ordnernamen mit "SET letzter=%%i".
Bei geschickter sortierung ist dann der letzte der Liste auch der ....jüngste/alphabetisch kleinste oder was immer du auswertest.

Und NUR in diesem gefundenen Ordner %letzter% brauchst du doch ein FOR/R- rekursives Durchwackeln machen... nicht in allen Ordnern.

Bitte versuche es erstmal anhand der Hinweise, auf die zwei Schritte umzustellen.
Sollte es klemmen... Hilfe steht hier immer bereit.

Grüße
Biber
Bitte warten ..
Mitglied: manufactum
08.02.2010 um 14:17 Uhr
Hallo Biber,

die gesuchten Hash-Dateien "full.hsh" befinden sich ausschließlich in den "*-base"-Ordnern.

for /f %%i in ('dir /b /ad /on "%SnapshotsBaseDir%\server2_%vol1%\*-base"') do set letzter=%%i

set LastHashFile="%SnapshotsBaseDir%\server2_%vol1%\%letzter%\full.hsh"

So hat es jetzt funktioniert! Den "dir"-Befehl kann man vielleicht noch vereinfachen.

Danke Dir für Deine Hilfe.

Grüße
manufactum
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
gelöst Netzwerk funktioniert nur in eine Richtung mit Gigabit (28)

Frage von DrChiwago zum Thema LAN, WAN, Wireless ...

Exchange Server
gelöst Exchange Absenderfilterung umgekehrt (4)

Frage von schicksal zum Thema Exchange Server ...

Exchange Server
Such-Index nach Neuerstellung defekt

Frage von Coverian zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...