thecaptain
Goto Top

Programm gesucht - Fehlende Dateien auflisten

Datensicherungsskript läuft mit Status "OK" durch, dennoch fehlen Dateien im Zielordner. Diese Dateien gilt es zu identifizieren.

Hallo,

wir sichern hier einige Ordner auf unseren Systemen mit einer Kombination aus Robocopy und Batch-Skripten. Kürzlich haben wir noch eine Prüfung hinzugefügt die sicherstellen soll, ob der Quell- und Zielordner nach der Sicherung wirklich identisch sind. Dazu verwenden wir das Programm DU von Sysinternals.

Dabei stellte sich jedoch heraus, dass es des öfteren zu Diskrepanzen kommt. Es weichen bei Quelle und Ziel die Anzahl der Dateien und Ordner (und somit die Größe des gesamten Ordners) ab. Wir haben daher die Sicherung testhalber mal mit einer anderen Software durchgeführt. Das Problem trat aber auch dort genau so auf. Wenn man jetzt die Log-Dateien auswertet, findet man dort aber keine Fehlermeldungen. Die Sicherung hat den Status "OK", ERRORLEVELS sind ebenfalls alle OK.

Mein Problem ist nicht, dass wir eine bessere DaSi-Lösung brauchen. Wir möchten herausfinden, welche ominösen Dateien da nicht gesichert wurden.

File Compare macht seine Sache schon ganz gut, lässt sich aber nicht per CMD ansteuern, Stroy ist wiederum zu mächtig. Kennt ihr eine (möglichst kleine und kostenlose) Software, die das gleiche mach wie "File Compare", sich per CMD steuern lässt und das Ergebnis in eine simple Textdatei ausspucken kann??

Danke!

Content-ID: 165788

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Loeffelstiel
Loeffelstiel 06.05.2011 um 12:29:52 Uhr
Goto Top
MoinMoin,

rsync mit Schalter -n (Trockenlauf) wäre ein Kandidat.

mfg Dirk
Lochkartenstanzer
Lochkartenstanzer 06.05.2011 um 12:54:02 Uhr
Goto Top
diff -rq aus dem cygwin-paket
thecaptain
thecaptain 06.05.2011 um 13:06:27 Uhr
Goto Top
Hi,

danke für die Antworten. Ich habe beide Programme kurz angeschaut.

*Rsync* scheidet leider aus: "Aufgrund seiner Funktionsweise muß RSync sowohl auf dem Quell- als auch dem Zielrechner laufen. (...)"
Das Zielgerät ist bei uns ein NAS, das wird leider nicht funktionieren

*Cygwin*: Ist auch schon wieder riesig groß und wahrscheinlich unheimlich mächtig. Allein, bis ich da die grundlegende Funktionsweise durchschaut habe, würde es ein paar Stunden dauern.

Ich möchte nicht undankbar erscheinen, aber ich suche eher ein kleines und portables Programm.
Korrn
Korrn 06.05.2011 um 13:12:50 Uhr
Goto Top
Hmm, robocopy sollte das mit dem Schalter /L können:
/L :: List only - don't copy, timestamp or delete any files.

Im Log kannst Du dann nachsehen, welche Dateien kopiert würden.
(Ich hatte einen ähnlichen Use-Case in der letzten Woche)
miniversum
miniversum 06.05.2011 um 13:14:28 Uhr
Goto Top
Mach ein dir /b /s auf quelle und ziel udn vergleiche mit fc oder for + findstr oder winmerge die dateien.
Bei winmerge kanns tud auch direkt die verzeichnisse vergleichen lassen.
Bei der dir /b /s variante kannst du auch mit der option für versteckte dateien arbeiten. Kommen evtl. daher die unterschiede?
miniversum
miniversum 06.05.2011 um 13:20:52 Uhr
Goto Top
das ginge dann auch mit xcopy /d /L
Lochkartenstanzer
Lochkartenstanzer 06.05.2011 um 13:31:14 Uhr
Goto Top
Zitat von @thecaptain:
Hi,

*Cygwin*: Ist auch schon wieder riesig groß und wahrscheinlich unheimlich mächtig. Allein, bis ich da die
grundlegende Funktionsweise durchschaut habe, würde es ein paar Stunden dauern.

Man kann auch nur Teile installieren.

cygwin stellt eigentlich nur eine Unix-Umgebung zur Verfügung (ein paar libraries/dlls. Dazu kann man sich die passenden Untilities heraussuchen. Wenn man nur diff braucht, sollte man auch nur diff installieren.

Ansonsten kannst Du die GNU-diffutils für Windows verwenden http://gnuwin32.sourceforge.net/packages/diffutils.htm
thecaptain
thecaptain 06.05.2011 um 13:39:45 Uhr
Goto Top
@Korrn#:
Die Robocopy-Logs haben wir schon ausgewertet. Laut dem Programm müsste alles geklappt haben und die Ordner müssten synchron sein. Das ist ja das merkwürdige...
                Total    Copied   Skipped  Mismatch    FAILED    Extras
     Dirs :     12587        28     12559         0         0         0
    Files :     60008     22392     37616         0         0        18
    Bytes : 162.131 g 137.408 g  24.722 g         0         0   543.1 k
    Times :   0:02:01   0:00:00                       0:00:00   0:02:01

    Ended : Fri May 06 00:07:01 2011

@miniversum:
Dein Vorschlag mit DIR und FC klingt schön simpel. Ich habe mit FC und zwei Test-TXTs ein wenig herumgespielt, bekomme aber immer die Meldung die Dateien seien zu verschieden, obwohl sie sich nur in vier Zeilen unterscheiden.
Vergleichen der Dateien D:\dell1.txt und D:\DELL2.TXT
Neusynchronisation fehlgeschlagen. Dateien sind zu verschieden.
EDIT:
Der Fehler scheint mit den automatisch generierten TXTs zusammen zu hängen. Wenn ich eine TXT einfach kopieren und manuell etwas bearbeite geht es.
Folgendes funktioniert nicht (produziert den o.g. mit den zu versch. Dateien):
dir /b /s C:\dell >> D:\dell1.txt
dir /b /s C:\dell2 >> D:\dell2.txt

fc /c d:\dell1.txt d:\dell2.txt
ackerdiesel
ackerdiesel 06.05.2011 um 13:58:57 Uhr
Goto Top
Hallo,

Windiff wäre mein Programm für deine genannten Anforderungen:

http://support.microsoft.com/kb/159214/de

Gruß
ackerdiesel
miniversum
miniversum 06.05.2011 um 14:57:12 Uhr
Goto Top
Das kann schon sein das es so zu viele Unterschiede gib.
Die Ausgabe von dir /b /s beinhaltet den Pfadnamen bei jeder Datei. Die inhalte bei deinen Dateien wäre also im Prinzip so:
D:\dell1.txt:
C:\dell\a.txt
C:\dell\b.txt
D:\dell2.txt:
C:\dell2\a.txt
C:\dell2\b.txt
Du hast also Unterschiede in jeder Zeile.
Wenn du die Laufwerke mit subst einbindest sollte das nicht der Fall sein:
subst X: C:\dell
dir /b /s X: >> D:\dell1.txt 
subst X: C:\dell2
dir /b /s X: >> D:\dell2.txt 
subst X: /d

fc /c d:\dell1.txt d:\dell2.txt
thecaptain
thecaptain 09.05.2011 um 11:26:05 Uhr
Goto Top
Hallo,

vielen Dank für die nützlichen Vorschläge. Die Versionen von ackerdiesel und miniversum (mit einer kleinen Ergänzung) funktionieren beide genau so, wie ich es brauche. Anbei noch die Kommandobefehle für beide Versionen, mit denen es bei mir funktioniert.

Zitat von @ackerdiesel:
Windiff wäre mein Programm für deine genannten Anforderungen:
http://support.microsoft.com/kb/159214/de
Der Download befindet sich hier, benötigt aber eine WGA-Prüfung.
 windiff /t /sLRDX D:\Logfile.txt C:\dell1 D:\dell2


Zitat von @miniversum:
Wenn du die Laufwerke mit subst einbindest sollte das nicht der Fall sein:
Jo, stimmt und klappt super. Einziges Manko bei dieser Lösung: Man muss natürlich wissen, welcher Laufwerksbuchstabe grade frei ist.
subst X: C:\dell
dir /b /s X: >> D:\dell1.txt 
subst X: /d
subst X: C:\dell2
dir /b /s X: >> D:\dell2.txt 
subst X: /d

fc /c d:\dell1.txt d:\dell2.txt >> D:\Logfile.txt

Vielen Dank nochmal!
miniversum
miniversum 09.05.2011 um 12:24:15 Uhr
Goto Top
Jo, stimmt und klappt super. Einziges Manko bei dieser Lösung: Man muss natürlich wissen, welcher Laufwerksbuchstabe grade frei ist.
Bei einer einmaligen Anwendung ist das ja machbar. Wenn es öfters benutzt werden soll kannst du ja auch auf einen freien Laufwerksbuchstaben abfragen:
for %%L in (d e f g h i j k l m n o p q r s t u v w x y z) do if not exist %%L:\NUL set LWqPath=%%L:
if %LWqPath%.==. (
  echo.
  echo FEHLER: Auf Ihrem System existiert kein freier Laufwerksbuchstabe. 
  pause
  goto:eof
)
echo Freier Laufwerksbuchstabe: %LWqPath%