Löschen von Dateien nach bestimmten Zeitmuster
Moin,
Situation: ein selbstgebautes Backupskript erstellt von Dateien täglich backups nach dem muster:
Datei_2017_05_31.file
Nun füllt sich der Ausgabeordner mit dieser Backups über die Zeit, mit hunderten Dateien:
Datei_2017_05_31.file
Datei_2017_05_30.file
Datei_2017_05_29.file
etc.
Um da aufzuräumen würde ich gerne alte Dateien löschen
Einfach:
z.B. mit PowerShell "CreationTime" von "Get-Date" abziehen und z.B. alle Files älter als 30 Tage löschen oder so.
Besser:
"Smart Rotate" - also letzte 7 Dateien bleiben, Dateien älter als 7 Tage 4 Version lassen (also 1x Datei pro Woche), Dateien älter als 30 Tage 12 Version lassen (also 1xDatei pro Monat), und Dateien älter als 1 Jahr eine Datei pro Jahr lassen
(hoffe das klingt verständlich)
Gibts da was fertiges dafür?
Oder muss man selbst das coden (also z.B. diese 4 kategorieren erstellen und die files entsprechend prüfen + löschen)?
PS:
Ist ne windows umgebung, daher beispiele mit PowerShell aber grundsätzlich auch bash, python whatever möglich - geht um die methode an sich
Situation: ein selbstgebautes Backupskript erstellt von Dateien täglich backups nach dem muster:
Datei_2017_05_31.file
Nun füllt sich der Ausgabeordner mit dieser Backups über die Zeit, mit hunderten Dateien:
Datei_2017_05_31.file
Datei_2017_05_30.file
Datei_2017_05_29.file
etc.
Um da aufzuräumen würde ich gerne alte Dateien löschen
Einfach:
z.B. mit PowerShell "CreationTime" von "Get-Date" abziehen und z.B. alle Files älter als 30 Tage löschen oder so.
Besser:
"Smart Rotate" - also letzte 7 Dateien bleiben, Dateien älter als 7 Tage 4 Version lassen (also 1x Datei pro Woche), Dateien älter als 30 Tage 12 Version lassen (also 1xDatei pro Monat), und Dateien älter als 1 Jahr eine Datei pro Jahr lassen
(hoffe das klingt verständlich)
Gibts da was fertiges dafür?
Oder muss man selbst das coden (also z.B. diese 4 kategorieren erstellen und die files entsprechend prüfen + löschen)?
PS:
Ist ne windows umgebung, daher beispiele mit PowerShell aber grundsätzlich auch bash, python whatever möglich - geht um die methode an sich
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 341453
Url: https://administrator.de/contentid/341453
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
hier eine Lösung via Powershell:Zum Testen kannst du dir das ganze auch ohne Löschbefehl ausgeben:
Gruß, Sascha
hier eine Lösung via Powershell:
gci -Path C:\Test | ?{$_.Name -like "Datei_*file" -and $_.CreationTime -lt (Get-Date).AddDays(-7)} | ri -Recurse -Force -EA SilentlyContinue
gci -Path C:\Test | ?{$_.Name -like "Datei_*file" -and $_.CreationTime -lt (Get-Date).AddDays(-7)}
Hallo,
du kannst das oben stehende Skript beliebig abändern oder erweitern, anstatt Löschen z.B. kopieren, verschieben, umbenennen, kopieren und löschen der alten Dateien, etc.
Kopieren:
Verschieben:
Empfehle aber bei Backup-Dateien das Kopieren, wenn dies erfolgreich war, dann erst die Dateien entfernen.
Gruß, Sascha
du kannst das oben stehende Skript beliebig abändern oder erweitern, anstatt Löschen z.B. kopieren, verschieben, umbenennen, kopieren und löschen der alten Dateien, etc.
Kopieren:
gci -Path C:\Test | ?{$_.Name -like "Datei_*file" -and $_.CreationTime -lt (Get-Date).AddDays(-7)} | %{cpi C:\Test\$_. -Destination D:\Test -Recurse -Passthru -EA Stop}
gci -Path C:\Test | ?{$_.Name -like "Datei_*file" -and $_.CreationTime -lt (Get-Date).AddDays(-7)} | %{mi $_.Name -Destination D:\Test}
Empfehle aber bei Backup-Dateien das Kopieren, wenn dies erfolgreich war, dann erst die Dateien entfernen.
Gruß, Sascha
Hallo,
hier hat sich jemand schon mal Gedanken über so ein Szenario gemacht, allerdings auch mit Verschieben der zu sichernden Dateien:
https://stackoverflow.com/questions/3671657/creating-powershell-script-t ...
Gruss
hier hat sich jemand schon mal Gedanken über so ein Szenario gemacht, allerdings auch mit Verschieben der zu sichernden Dateien:
https://stackoverflow.com/questions/3671657/creating-powershell-script-t ...
Gruss