Ich benutze ein Powershell-Skript, um Dateien von einem Ort zu einem anderen zu verschieben, dann verwende ich compare-object
, um einen Hash-Wert von beiden Standorten zu erhalten und signalisieren, wenn ein Problem vorliegt.compare-object ohne Dateien älter als x Zeit
Da die get-hash
eine lange Zeit dauert (sprechen von mehreren GB Daten) möchte ich Dateien ausschließen, die bereits für Stunden/Tage vorhanden sind.
mein Code:
Compare-Object -ReferenceObject (dir $nas_smb_share -Recurse | Where-Object{!$_.psiscontainer} | get-hash) -differenceObject (dir $cs_dest -Recurse | Where-Object {!$_.psiscontainer} | get-hash) |
%{if ($_.SideIndicator -eq "=>"){$result = ("$($_.InputObject)")}}
if ([string]::IsNullOrEmpty($result)){$res = "Transfer succeeded without problems"}
else {$res = ("transfer failed on following file(s): "+ (dir $cs_dest -Recurse | Where-Object {!$_.psiscontainer } | get-hash | ? {$_.hashstring -match $result}))}
Die Ausgabe ist eine Mail mit den Dateien Hash-Wert, der geändert wird.
Also würde ich eine Eingabe an mag, wie dieser Teil zu ändern:
Compare-Object -ReferenceObject (dir $nas_smb_share -Recurse | Where-object{!$_.psiscontainer} | get-hash)
so dauert es nur Dateien/Ordner, die nicht älter sind als zum Beispiel 1 Stunde
Anschauen ..... :-) – EBGreen
@EBGreen: ... :) – mklement0