xelage
Goto Top

Batch Script für Backup Dateien ausser Sonntag und letzte 30 Files

Hallo zusammen,

eine SQL Datenbank erstellt jede Nacht um 2:00 Uhr ein Backupfile (Beispielort: D:\Backup.SQL\*.*). Aus Platzgründen würde ich nun gerne ein Batchfile ausführen, welches nur die letzten 30 Files und falls älter nur jeweils Sonntag behält. Ich habe beides einzeln gefunden, aber wie kombiniere ich diese?

besten Dank für eure Antworten!

gruss xelage

Content-Key: 665942

Url: https://administrator.de/contentid/665942

Printed on: April 24, 2024 at 10:04 o'clock

Mitglied: 148121
Solution 148121 Apr 20, 2021 updated at 13:13:39 (UTC)
Goto Top
@echo off
powershell -EP Bypass -C "ls 'D:\Backup.SQL' -File | sort CreationTime -Descending | select -Skip 30 | ?{$_.CreationTime.DayOfWeek -ne 0} | rm -Force"  

Gruß w.
Member: xelage
xelage Apr 21, 2021 at 14:37:01 (UTC)
Goto Top
ok ich probiere es aus und gib bescheid. danke.
Member: xelage
xelage May 03, 2021 at 12:39:09 (UTC)
Goto Top
hmm es werden alle dateien bis auf die letzen 30 gelöscht, meine anfrage ist dann aber noch nicht komplett, es fehlt noch was älter als 30 tage ist noch jeden sonntag oder von mir aus auch einmal pro woche...
Mitglied: 148121
148121 May 03, 2021 updated at 13:49:50 (UTC)
Goto Top
Zitat von @xelage:

hmm es werden alle dateien bis auf die letzen 30 gelöscht, meine anfrage ist dann aber noch nicht komplett, es fehlt noch was älter als 30 tage ist noch jeden sonntag oder von mir aus auch einmal pro woche...
Nein das kann schon aus Prinzip nichts sein, denn es ist ebenfalls schon im Skript berücksichtigt!
Und zwar macht das genau dieser Teil des Skripts

?{$_.CreationTime.DayOfWeek -ne 0} 
Dieser prüft ob die Datei an des Erstelldatums nicht an einem Sonntag erstellt wurde und löscht eben nur diese! Works as designed!
Member: xelage
xelage May 03, 2021 at 13:50:28 (UTC)
Goto Top
dann wird das nicht gemacht. es werden alle dateien bis auf die letzten 30 gelöscht.
Mitglied: 148121
148121 May 03, 2021 updated at 14:06:40 (UTC)
Goto Top
Zitat von @xelage:

dann wird das nicht gemacht. es werden alle dateien bis auf die letzten 30 gelöscht.
Doch funktioniert hier ja einwandfrei! Du hast da wohl entweder einen Interpretationsfehler oder deine Dateien haben das falsche Erstelldatum.
Wenn du stattdessen das Änderungsdatum berücksichtigen willst musst du LastWriteTime nehmen!!
Kann ich dir gerne zeigen wenn du mir nicht glaubst ...

Hier das Testverzeichnis (für das Beispiel nur 3 Dateien und der Abschnitt mit den 30 auslassen weggelassen):

screenshot

Wie du siehst löscht er alle außer die FIles die an einem Sonntag geändert wurden (Hab hier für das Beispiel das Änderungsdatum statt dem Erstelldatum genommen)

screenshot

Also, wie schon gesagt, works as designed!

Wenn's das dann war bitte noch den Thread schließen.
Member: xelage
xelage May 05, 2021 at 09:35:46 (UTC)
Goto Top
natürlich hattest du recht, ich hatte eine kopie der scharfen daten gemacht und da war das erstellerdatum natürlich das heutige. mit LastWriteTime hat es dann wie gewünscht mit den kopiedaten funktioniert face-smile
works as designed! face-smile

danke nochmals!
Mitglied: 148121
148121 May 05, 2021 updated at 09:44:17 (UTC)
Goto Top
Na dann bitte auch den Beitrag und Lösungen entsprechend als gelöst markieren nicht vergessen. Danke.