Jump to content

PS: Backup Dateien Löschen Inkrimentell und Vollsicherung-Fehler im Script


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 ;)

Link zu diesem Kommentar

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 von Vidan
Link zu diesem Kommentar

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
Link zu diesem Kommentar

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 von Vidan
Link zu diesem Kommentar

@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 von Vidan
Link zu diesem Kommentar

   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.

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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öscht
VIB 15 Tage wird gelöscht
VIB 14 Tage wird gelöscht
VIB 13 Tage wird nicht gelöscht
VBK 12 Tage
VIB 11 Tage
VBK 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

Link zu diesem Kommentar

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:

Link zu diesem Kommentar

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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...