Jump to content
Sign in to follow this  
Kuddel071089

PS: Robocopy Log weiterverarbeiten

Recommended Posts

Hallo zusammen,

 

ich synchronisiere bei mir Täglich meine Daten von einem NAS auf ein anderes mit Robocpy.

 

Jetzt würde ich in der Ergebnismail gern die kopierten Daten ausgeben.

 

Im log sieht es ja bekanntlich so aus:


                    Insgesamt   KopiertšbersprungenKeine šbereinstimmung    FEHLER    Extras
Verzeich.:      1811         0         0         0         0         0
  Dateien:      20429         0     20429         0         0         0
    Bytes:       5.944 t         0   5.944 t         0         0         0
   Zeiten:       0:02:22   0:00:00                       0:00:00   0:02:22

 

Ich hab jetzt versucht, die kopierten Bytes auszuschneiden. Leider ohne Erfolg.

Aktuell bekomme ich zumindest die Zeile ausgeschnitten, die ich weiterarbeiten möchte:


Bytes:   5.944 t         0   5.944 t         0         0         0

 

Wie kann ich jetzt die kopierten Bytes, in diesem Fall 0 rasufiltern?

 

Danke schon einmal

Share this post


Link to post
Share on other sites

Vielleicht zeigst Du erstmal, was Du bisher hast. Nicht dass wir Dir jetzt eine Powershell-Lösung anbieten, Du aber mit Erlang unterwegs bist ... oder so ...  ;-)

Share this post


Link to post
Share on other sites


$temp = "K:\temp.txt"

$logdatei = Get-content K:\bas_backup_log.txt | Select-Object -Last 4

$logdatei | Out-File -FilePath $temp

$logdatei = Get-Content $temp | Select-Object -First 1
$logdatei

 

Remove-Item $temp

Share this post


Link to post
Share on other sites

OK ... das sieht wirklich nicht nach großem Erfolg aus. ;-)  .... :D  .... aber dafür hast Du ja uns ...  ;-)  ... ich hab grad mal gesucht, ich hatte mal eine Funktion gebaut, die robocopy benutzt, um die Anzahl der Dateien und Unterodner in einem gegebenen Verzeichnis und deren Gesamtgröße ermittelt. Daraus hier dann der SChnipsel um die Werte aus dem Log zu fräsen:

$logdatei | Where-Object {"$_" -match "(Dateien|Files\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlDateien = "{0,9:0,0}" -f [INT]$Matches[2]

$logdatei | Where-Object {"$_" -match "(Verzeich\.|Dirs\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlUnterOrdner = "{0,10:0,0}" -f [INT]$Matches[2]

$Groesse = "{0,12:n2}" -f [math]::Round((($logdatei | Where-Object {$_ -match "Bytes"}).trim().split(" ")[1]) / 1MB , 2)
#endregion                

#region Erzeugen des Ausgabeobjekts
[PSCustomObject]@{
    "Subfolders"    = $AnzahlUnterOrdner
    "FileCount"     = $AnzahlDateien
    "Size    (MB)"  = $Groesse
}

Probier ob's passt ... es sollte mit deutschem und englishem robocopy log klar kommen

 

Edit: Achso  ... was ich noch vergessen habe .... wichtig!!!  damit das funktioniert, musst Du robocopy mit dem SChalter /bytes aufrufen!!!!

Edited by BOfH_666

Share this post


Link to post
Share on other sites
vor 1 Stunde schrieb BOfH_666:

OK ... das sieht wirklich nicht nach großem Erfolg aus. ;-)  .... :D  .... aber dafür hast Du ja uns ...  ;-)  ... ich hab grad mal gesucht, ich hatte mal eine Funktion gebaut, die robocopy benutzt, um die Anzahl der Dateien und Unterodner in einem gegebenen Verzeichnis und deren Gesamtgröße ermittelt. Daraus hier dann der SChnipsel um die Werte aus dem Log zu fräsen:


$logdatei | Where-Object {"$_" -match "(Dateien|Files\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlDateien = "{0,9:0,0}" -f [INT]$Matches[2]

$logdatei | Where-Object {"$_" -match "(Verzeich\.|Dirs\s)\:\s+(\d+)\s"} | Out-Null
$AnzahlUnterOrdner = "{0,10:0,0}" -f [INT]$Matches[2]

$Groesse = "{0,12:n2}" -f [math]::Round((($logdatei | Where-Object {$_ -match "Bytes"}).trim().split(" ")[1]) / 1MB , 2)
#endregion                

#region Erzeugen des Ausgabeobjekts
[PSCustomObject]@{
    "Subfolders"    = $AnzahlUnterOrdner
    "FileCount"     = $AnzahlDateien
    "Size    (MB)"  = $Groesse
}

Probier ob's passt ... es sollte mit deutschem und englishem robocopy log klar kommen

 

Edit: Achso  ... was ich noch vergessen habe .... wichtig!!!  damit das funktioniert, musst Du robocopy mit dem SChalter /bytes aufrufen!!!!

Danke für das Skript,

 

funktioniert mit meiner Logdate auch, aber ich habe keinen Plan, wich das jetzt umgebogen bekomme auf kopierte Bytes. Dafür fehlt mir gerade ein wenig das KnowHow

Share this post


Link to post
Share on other sites
vor 1 Stunde schrieb Kuddel071089:

funktioniert mit meiner Logdate auch, aber ich habe keinen Plan, wich das jetzt umgebogen bekomme auf kopierte Bytes. Dafür fehlt mir gerade ein wenig das KnowHow

??? Wenn's schon funktioniert, brauchst Du doch nix mehr umbiegen!? Falls doch nicht: Wer hat denn den robocopy-Befehl so eingerichtet, dass er Daten von einem NAS auf's nächste schiebt? Dem sagst Du, er soll als weitere Option an die Kommandozeile ein "/BYTES" anhängen - das wars. Damit würde robocopy nicht mehr "KB" oder "MB" oder "GB" angeben, sondern immer nur Bytes. Und das rechnet der Code immer in "MB" um.  ;-)

Share this post


Link to post
Share on other sites

Naja dein Skirpt zeigt mir doch die gesamt Anzahl der Unterordner und die Anzahl der Datein in der Quelle an.

 

MIch interssiert ja aber nur die Datenmenge die kopiert wurde und die wird nicht angezeigt

Share this post


Link to post
Share on other sites

Du hast das Talent, mich zu verwirren.  ;-) Hattest Du nicht vorhin geschrieben, dass es auch mit Deiner "Logdate" funktioniert? Was wird denn ausgegeben? Bitte immer daran denken, dass wir (ich) Deinen Bildschirm nicht sehen können (kann). Es wäre also hilfreich, zu sehen, welchen Code genau Du benutzt hast, welche Fehlermeldungen Du evtl. bekommen hast und vielleicht welche Ausgabe Du erhalten hast und wie sich diese zur erwarteten Ausgabe unterscheidet.

Share this post


Link to post
Share on other sites

Okay dann versucheich jetzt noch einmal ausführlicher zu beschreiben :-) ^^

 

Ich habe die Logdatei importiert und versucht weiter zu verarbeiten

 

Quelldaten (klassicher Robocopy Log)


                 Insgesamt   Kopiert  ÜbersprungenKeine šbereinstimmung    FEHLER    Extras
Verzeich.:        1811               0              0          0         0         0
  Dateien:     20429                0     20429           0         0         0
    Bytes:      5.944 t      2.000 t     5.944 t          0         0         0
   Zeiten:      0:02:22     0:00:00                       0:00:00   0:02:22
   Beendet: Donnerstag, 28. Juni 2018 08:16:42

 

 

Mich interessieren jetzt nur die 2.000 t in der Spalte "kopiert".

 

Bis jetzt habe ich es geschafft den import auf die Zeile zu minimieren

cls
$temp = "K:\temp.txt"

$logdatei = Get-content K:\backup_nas_Log.txt -Tail 7
$logdatei | Out-File -FilePath $temp

$logdatei = Get-Content $temp -Tail 4
$logdatei | Out-File -FilePath $temp
$logdatei = Get-Content $temp | Select-Object -first 1


$logdatei
Remove-Item $temp

 

Ergebnis:


 Bytes:   5.944 t   2.000 t   5.944 t         0         0         0

 

Jetzt muss ich die 2.000t irgendwie noch aus der Zeile ausschneiden...

Edited by Kuddel071089

Share this post


Link to post
Share on other sites

OK, Du benutzt also nicht mein Codebeispiel. Na das erklärt schon ein wenig. Wenn Du meinen Code benutzen wolltest, bräuchtest Du die Logdatei nicht vorher aufwändig zerteilen, sondern könntest sie komplet verfüttern. Dafür müsstest Du allerdings VORHER bei Deinem nächsten Copyjob mit robocopy den Aufruf von robocopy so anpassen, dass robocopy entsprechend große Jobs nicht mehr in GB oder TB angibt, sondern in Bytes. Das hatte ich ja oben shcon beschrieben. .... soviel dazu.

 

Wenn Du jetzt mit Deinem Code weitermachen möchtest, hast Du verschiedene Möglichkeiten. Eine einfachere wäre z.B., die Zeile einfach an den Leerstellen aufzusplitten und dann einfach das 5. Element auszugeben.  So hier:

($logdatei -split "\s+")[4]

 

Share this post


Link to post
Share on other sites

Da ich dein Skript nicht so ganz verstehe ^^ habe ich es selber versucht.

 

Mit deinem letzten Tip bekomme ich jetzt die 2000 raus.

 

Dann werde ich das mal einbauen und morgen früh checken was in der Mail steht :-)

Share this post


Link to post
Share on other sites


Startzeit:  29.06.2018 - 08.00 Uhr


Ende:      29.06.2018 - 08.03 Uhr


-------------------------------------------------
FREIER SPEICHER AUF E:\        2.27 TB
FREIER SPEICHER AUF F:\        2.66 TB
 


Kopierte Daten: 0 GB
Dauer: 0h:-2m:-54s

 

funktioniert :-) Besten Dank

Edited by Kuddel071089

Share this post


Link to post
Share on other sites

Hmmmm ... bist Du Dir wirklich sicher? Wenn ich Deine Beispiel-Logdaten richtig interpretiere, die Du am Anfang gepostet hattest, hast Du dort 2TB von insgesamt 5.99TB kopiert. In der Ausgabe, die Du hier oben zeigst, steht 0GB. Bist Du sicher, dass das so zusammenpasst, wie Du Dir das vorstellst? Deshalb hätte mein Code die kopierten Bytes immer als Bytes entgegengenommen und selbst in MB umgerechnet. Damit könntest Du die automatische "Zusammenfassung" größerer Dateimengen von robocopy umgehen.  ;-)

Edited by BOfH_666

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...