Select-OutdatedFilenames #
ÜBERSICHT #
Ermittelt veraltete Datensicherungsdateien anhand des Datums im Dateinamen.
SYNTAX #
Select-OutdatedFilenames [-Filenames] <object> [-Basename] <string> [-Extension] <string>
[[-History] <int>] [<CommonParameters>]
BESCHREIBUNG #
Diese Funktion dient der automatisierten Verwaltung von Backup-Dateien auf NAS, FTP oder SFTP-Zielen. Sie filtert eine Liste von Dateinamen nach einem erwarteten Muster ($Basename-YYYY-MM-DD-HH-mm-ss-ffff.$Extension) und identifiziert jene Dateien, die gemäß der gewünschten -History-Tiefe als veraltet gelten.
Sie wird u. a. von Backup-MssqlDatabase verwendet, um alte ZIP-Dateien von Sicherungen automatisch zu löschen – sowohl lokal als auch auf Remote-Systemen.
Anwendungslogik: #
- Akzeptiert eine Liste von Dateinamen (ohne Pfad).
- Erkennt Dateien, die exakt dem Muster
<Basename>-<Zeitstempel>.<Extension>entsprechen. - Sortiert die Dateien nach Zeitstempel (abgeleitet aus dem Namen).
- Gibt die ältesten Dateien zurück, die über die definierte
-Historyhinausgehen.
PARAMETER #
-Filenames #
Type: object
Eine Liste von Dateinamen (z. B. aus Get-ChildItem -Name oder einem FTP-Verzeichnis).
-Basename #
Type: string
Der gemeinsame Basisname der Sicherungsdateien (z. B. MyDatabase). Dieser muss exakt mit dem Prefix im Dateinamen übereinstimmen.
-Extension #
Type: string
Die Dateiendung (z. B. .zip). Kann mit oder ohne Punkt übergeben werden.
-History #
Type: int
Default: 3
Anzahl der aufzubewahrenden Dateien. Alle älteren werden als “veraltet” zurückgegeben. Standard: 3
AUSGABEN #
[string[]] – Liste der veralteten Dateinamen, die gelöscht werden können.
BEISPIELE #
# Gibt die beiden ältesten Dateien zurück, also von 01.01. und 02.01.
Select-OutdatedFilenames -Filenames @("MyDb-2024-01-01-10-00-00-1234.zip", "MyDb-2024-01-02-10-00-00-1234.zip", "MyDb-2024-01-03-10-00-00-1234.zip", "MyDb-2024-01-04-10-00-00-1234.zip") -basename 'MyDb' -extension '.zip' -history 2
Get-ChildItem -Path \\nas\sql -Name | Select-OutdatedFilenames -basename 'DB1' -extension 'zip' -history 5 | ForEach-Object { Remove-Item "\\nas\sql\$_" }
HINWEISE #
- Der Zeitstempel wird ausschließlich aus dem Dateinamen extrahiert.
- Dateien, die nicht exakt dem erwarteten Namensschema entsprechen, werden ignoriert.
- Unterstützt keine Mehrfachformate oder alternativen Zeitstempel.