michid41
Goto Top

Nur korrupte Dateien aus dem Backup überschreiben

Hallo Zusammen,

ich habe folgende Situation:
Vor einigen Tagen viel uns auf , dass das Filesystem unseres Gruppenlaufwerkes (1,3 TB) korrupt zu sein scheint. Einige Dateien hatten 0-Byte und einige Ordner ließen sich (mit einer Fehlermeldung) nicht mehr öffnen.
Ein CHKDSK half uns dabei einiges wiederherstellen zu können (vor allem die Ordnerstruktur). Allerdings war nicht alles zu retten. Es gibt jede menge 0-Byte-Dateien . Glücklicherweise haben wir ein Backup dieses Gruppenlaufwerks.
Dieses ist jedoch ca. 3 Wochen alt und beinhaltet jede menge alte Daten die in den 3 Wochen von den Benutzern gelöscht wurden. Diese will ich NICHT wieder auf das "Original"-Gruppenlaufwerk zurückspielen will.

Habt ihr eine Idee wie ich aus dem Backup NUR die Dateien übertragen kann, die auf dem "Original"-Laufwerk beschädigt (also 0-byte) sind?
Ich will auch keine neueren Dateien durch ältere überschreiben und keine Dateien kopieren die im Ziel nicht existieren (in xcopy gibt es hier zum Beispiel option /U "Kopiert nur Dateien, die im Zielverzeichnis vorhanden sind.").

Ein Problem hierbei ist leider, dass die korrupten Dateien den selben Zeitstempel haben wie die im Backup.

Ist leider alles ein wenig kompliziert. Vielleicht habt ihr ja eine Idee?

Vielen Dank im Voraus.

Michael

Content-ID: 257042

Url: https://administrator.de/contentid/257042

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

Lochkartenstanzer
Lösung Lochkartenstanzer 08.12.2014 aktualisiert um 18:41:53 Uhr
Goto Top
Moin,

Skripte schreiben, daß Die dir 0-byte-dateien hersussucht und dann einfach diese dateien kopieren lassen Also:

  • Suche alle Dateien der größe 0 byte im ziel udn seichere die Liste ab.
  • erstellen Liste mit Quelle udn Ziel durch anpassugne der Pfade
  • kopiere

Die reale Erstelung des Skriptzes überlasse ich Dir als Übungsaufgabe. face-smile

Hier und an anderen stellen im Forum findest Du Anleitungen, zur batchprogrammierung.

lks

PS. Hier ein kleiens skript für die bash:

cd $zielpfad; find . -type f -empty -exec cp -av $quellpfad/{} {} \; 
MichiD41
MichiD41 08.12.2014 um 14:53:34 Uhr
Goto Top
Hi,

danke schonmal hierfür. Ich habe leider vergessen zu erwähnen, dass ich die selbe Idee auch schon hatte.

Ich habe mir sogar folgendes Skript rausgesucht:

@echo off
(for /f "delims=" %%a in ('dir e:\ /s /b /a-d'
) do if %%~za==0 echo "%%~fa") > "output.txt"

Allerdings läuft dieses Skript nun schon seit 14 Stunden und ich habe leider keine Indizien darüber in welchem Status das Skript sich gerade befindet.
Deshalb habe ich gehofft, dass ihr vieleicht noch eine andere Idee, oder veilleicht zumindest ein schnelleres Skript kennt.

vielen Dank
Gersen
Lösung Gersen 08.12.2014 aktualisiert um 18:41:43 Uhr
Goto Top
Hallo,

14 Stunden sind etwas lang... face-wink
for /R E:\ %%i in (*.*) do @if %%~zi==0 echo %%i >> C:\temp\output.txt
Müsste etwas performanter laufen. Und man kann sich mit einem TAIL-Programm die Fortschritte in der Output-Datei anschauen.

Gruß,
Gersen
MichiD41
MichiD41 08.12.2014 um 18:44:09 Uhr
Goto Top
Vielen Dank Gersen! face-smile

Das Skript tut seinen Job und ich habe hier durch TAIL zumindest einen Status des Vorgangs face-smile
Scheint als sollte dies hier locker unter 14 Stunden fertig werden !