Vidan 0 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Servus und guten Tag, zuerst mein PowerShell Fähigkeiten befindet sich eher am unteren ende der Nahrungskette :) Ziel ist es vbk Dateien (Vollsicherung) zu löschen die älter als 14 tage sind inklusive seiner dazugehören vib (inkrementelle) dazu prüfe ich eine VBK die neuer ist als 14 Tage und lösche alles was älter ist.(in der Theorie) #Pfad Setzten $path = '\\wechselplatte\Sicherung\*' #Liste erstellen mit vbk ind vib Dateien $Liste = Get-ChildItem -Path $path -Include *.vbk,*.vib #Limit für VBK Festlegen $limit= (Get-Date).AddDays(-14) #Letzte Gütlige Vollsicherung VBK $lates = @(Get-ChildItem $path -include *.vbk | where ($_.LastWriteTime -lt $limit) #VIB und VBK unterhalb der Schwelle der Gültigen VBK löschen Get-ChildItem -Path $path | where ($_.CreationTime -gt $limit) | Remove-Item -WhatIf Dabei komme ich nicht wirklich weiter. Die Letzte Zeile wirft eine Fehler und ich stehe auf dem Schlauch wieso, des weiteren glaube ich das ich mit dem Code nicht exakt das erreich was ich möchte. Könnte mir jemand auf die Sprünge helfen? Schönen Wochenende Vidan und Bitte für die Freitagsfrage ;) Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Kann das nicht das Backup Programm machen, welches diese Backups anlegt? Magst du nicht den Fehler verraten? Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Moin, mir ist nicht ganz klar, wozu du die ganzen Listen und Variablen überhaupt erzeugst. Reicht es nicht aus, alle Dateien zu löschen, die älter sind als 14 Tage? Das bekämst du dann auch mit robocopy hin. Gruß, Nils Zitieren Link zu diesem Kommentar
Vidan 0 Geschrieben 8. September 2017 Autor Melden Teilen Geschrieben 8. September 2017 (bearbeitet) Servus, es handelt sich um Wechseldatenträger und die Backup Software eines namenhaften Hersteller kann das leider nicht :/ Ums genauer zu beschreiben: Die Datenträger werden gewechselt, damit fängt er eine Vollsicherung an kann aber die alten Daten nicht löschen da er sie nicht mehr "kennt" und so laufen die Datenträger voll. Um den entgegen zu wirken möchte ich nun eben die Daten per Script nach Beendigung des Jobs löschen lassen. Älter als 14 Tage langt leider nicht denn dann hätte ich beim löschen einer vbk eventuell das Problem das die aufbauen VIBs unbrauchbar wären. Ansonsten würde ich das natürlich so lösen. bearbeitet 8. September 2017 von Vidan Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Wenn Du eine Fehlermeldung bekommst, wäre es natürlich für die Fehlerbeseitigung hilfreich, zu wissen, welche Fehlermeldung Du bekommst. Für sowas reicht üblicherweise ein Einzeiler … ungefähr so: Get-ChildItem -Path '\\wechselplatte\Sicherung\*' -Include *.vbk,*.vib | Where-Object ($_.CreationTime -lt ((Get-Date).AddDays(-14))) | Remove-Item -WhatIf Zitieren Link zu diesem Kommentar
Vidan 0 Geschrieben 8. September 2017 Autor Melden Teilen Geschrieben 8. September 2017 (bearbeitet) Servus, danke genau aber dabei hätte ich dann das Problem das eventuell vib Dateien die auf eine vbk aufbauen gelöscht werden. Ich möchte natürlich alle zusammengehörige vIb und vbk Dateien behalten. So wollten eine Fehler ....kommt sofort: In C:\Users\xx\Desktop\Tests\veeam\loeschen.ps1:19 Zeichen:2 + Schließende ")" fehlt in einem Unterausdruck. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingEndParenthesisInSubexpression Grüße Vidan bearbeitet 8. September 2017 von Vidan Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Welche Backupsoftware ist es denn? Veeam? https://helpcenter.veeam.com/docs/backup/vsphere/rotated_drives_configure.html?ver=95 https://www.veeam.com/kb1154 Zitieren Link zu diesem Kommentar
Vidan 0 Geschrieben 8. September 2017 Autor Melden Teilen Geschrieben 8. September 2017 (bearbeitet) @Dukel exakt und habe mit Veeam einen 3Monatskampf hinter mir ;) als Zitat:" By default, repositories configured for rotated media do not delete any backup files when disks are swapped. If a disk containing a previous backup is to be re-used, but lacks sufficient available space for new backup files, the old files must be deleted manually, or by a pre-job script." Die Editierung der Registry ist ebenfalls nicht zielführen den es sollen ja durchaus alten Daten drauf bleiben nun eben nicht alle. Die Veeam Aritkel dazu kenne ich nunmehr mehr als auswendig, da ich am Anfang noch auf einen Progammfehler gehofft hatte. bearbeitet 8. September 2017 von Vidan Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Fehlermeldung sagts doch: Her fehlt ne schliessende Klammer: $lates = @(Get-ChildItem $path -include *.vbk | where ($_.LastWriteTime -lt $limit) ... wobei Du mit dem Konstrukt Dein Ziel m.E. noch nicht erreichst ;) Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 8. September 2017 Melden Teilen Geschrieben 8. September 2017 Ich möchte natürlich alle zusammengehörige vIb und vbk Dateien behalten. Woran erkennt man denn zusammengehörige Dateien? ... am Namen? Wenn das eindeutig zu bestimmen ist, brauchst Du doch nur das Alter der entsprechenden "Hauptdatei" ermitteln und bei den zugehörigen Dateien nicht nach dem Alter entscheiden, sondern nach dem Namen, ob sie weg können oder nicht. Zitieren Link zu diesem Kommentar
Vidan 0 Geschrieben 11. September 2017 Autor Melden Teilen Geschrieben 11. September 2017 Guten Morgen, so nachdem der Freitag rum ist und mein ärger etwas verraucht. Man erkennt zusammengehörige Sicherung eigentlich nur am Datum und Dateiendung. Sprich auf die VBK folgen immer VIB mit neueren Datum als die VBK. Ist eine VBK z.B. 14 Tage alt können alle VBKs und VIBs die älter sind gelöscht werden (sofern man 14 Tage aufgeben möchte) Was ich erreichen wollte ist nicht anderen als die VBK finden die >=14Tage ist und dann alles ältere Löschen. Natürlich wäre auch die "unelegantere Art" einfach alles Löschen was 14 Tage alt ist möglich, finde ich aber Persönlich unschön. Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 11. September 2017 Melden Teilen Geschrieben 11. September 2017 Und wo ist da jetzt das Problem? Zum Thema "Datei und Datum" mit Powershell findest Du genügend Tipps und Skriptbeispiele im Netz :) Zitieren Link zu diesem Kommentar
Vidan 0 Geschrieben 12. September 2017 Autor Melden Teilen Geschrieben 12. September 2017 Guten Mittag, exakt eine Löschung nach Alter wäre das geringste Problem. Ich hab es mal versucht einfach darzustellen (s.u) Lösche ich nun alles was älter als 14 Tage ist per Script habe ich eine unvollständige Backup kette den die zugehörige VIB und VBK Dateien der 13 Tage alten VIB sind nicht mehr vorhanden soll aber weg sein. Es ist auch eher ein Kosmetisches Problem. Löschalter 14 Tage VBK 16 Tage wird gelöschtVIB 15 Tage wird gelöschtVIB 14 Tage wird gelöschtVIB 13 Tage wird nicht gelöschtVBK 12 TageVIB 11 TageVBK 10 Tage Ich hoffe das macht mein Problem etwas "transparenter". Was mir auffällt wäre das ich mit meinem Versuch oben das Ziel ebenfalls nicht erreichen würde wie Cybquest bereits erwähnt hat. Grüße Vidan Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 12. September 2017 Melden Teilen Geschrieben 12. September 2017 Ich versuche das nochmal präzise zu formulieren: Du möchtest also alles entfernen, was älter ist als 14 Tage und zusätzlich die eventuell noch existierenden VIB-Dateien, die älter sind als die älteste VBK-Datei die (noch) jünger ist als 14 Tage, richtig? Die zweite Möglichkeit wäre: Du möchtest alles entfernen, was älter ist als 14, es sei denn, die älteste Datei ist keine VBK-Datei. Dann sollen noch alle VIB-Dateien aufbewahrt werden, bis zur nächsten VBK-Datei, richtig? Beides mit Powershell kein Problem. ;) :wink2: Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 12. September 2017 Melden Teilen Geschrieben 12. September 2017 Meine "Interpretation": Suche die neueste .VBK-Datei und lösche alles, was älter ist als diese. Korrekt? $LatestVBK = get-childitem $path -include *.VBK | Sort-Object LastWriteTime -Descending | Select-Object -First $DeletionTimestamp = $LatestVBK.LastWriteTime Das Löschen des Rests geht sinngemäß mit Where-Object und Vergleich der LastWriteTime mit dem $DeletionTimestamp. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.