Einfache Möglichkeit, zu überprüfen, welche Dateien fehlen

570
Baibro

Ich habe 2 Festplatten, ich habe alles von einer Festplatte auf eine neue Festplatte kopiert, aber einige Dateien wurden nicht kopiert, da sie beschädigt waren. Gibt es eine einfache Möglichkeit, zu überprüfen, welche Dateien von einer Festplatte nicht auf einer anderen liegen?

0
Aus meiner Sicht sollten Sie sich mit `rsync` befassen, und ich denke, dass` rsync --update --list-only` den Trick ausführen sollte, aber ich bin mir nicht sicher. In jedem Fall leistet `rsync` eine großartige Arbeit. Möglicherweise möchten Sie auch unter [rsyncbackup.vbs] (http://www.heise.de/download/rsyncbackup.vbs.html) nachsehen, das von einigen Fachleuten für die kostenlose Verwendung erstellt wurde, da kommerzielle Lösungen nicht zufriedenstellend waren. Run CMD vor 8 Jahren 0
ja eine der Sync-Softwares, die "Compare" -Routinen haben, windiff (microsoft) ist ein wirklich altes einfaches kleines Programm, das vergleicht, der erste Scanvorgang dauert ewig, aber wenn man es lernt, wie man es benutzt, kann man es neu scannen und kopieren, was anders ist / falsch. Nicht für das Kopieren von Massendateien gedacht, eher für das Synchronisieren von Teilen und Teilen in einem Ordner-Unterordner-Satz, aber es funktioniert gut, wenn die Zeit gegeben ist, und prüft jedes Bit :-) der Dateien. Psycogeek vor 8 Jahren 0

2 Antworten auf die Frage

3
Yorik
robocopy sourcedriveletter: destinationdriveletter: /MIR /LOG:logfilename.txt /TEE /L 

Robocopy ist ein in Windows eingebautes Befehlszeilentool. Sie können die Optionen überprüfen, indem Sie eine cmd-Eingabeaufforderung öffnen (zu diesem Zweck wahrscheinlich als Administrator vermutlich) und dann die Eingabe vornehmen robocopy /?oder robocopy /? > %USERPROFILE%\desktop\robocopyoptions.txteine Textdateiversion des Hilfedokuments verwenden.

In meinem obigen Beispiel /MIRbedeutet "Spiegeln" und es dupliziert "Quelle" in "Ziel" und löscht alles in "Ziel", das nicht in "Quelle" ist.

/log:protokolliert eine Datei, /TEEgibt sie an die Konsole sowie die Protokolldatei aus.

Der letzte Befehl /Llegt fest, dass nur eine Liste erstellt werden soll, und kopiert oder löscht keine Dateien.

Das Protokoll zeigt Ihnen sehr deutlich, welche Dateien in der Quelle im Ziel nicht vorhanden sind.

Natürlich möchte ich Sie dringend bitten, zunächst die Hilfedokumente zu überprüfen, um sicherzustellen, dass mein Beispiel korrekt ist.

Danke @Yorik, das funktionierte mit der exakten Befehlszeile, die Sie an die Spitze gesetzt hatten, aber ich habe nur für den Fall nachgesehen, akzeptiert Baibro vor 8 Jahren 0
2
BramMooij

Feedback von OP: Excel-Methode hat für ihn nicht funktioniert, Matlab-Methode ist ungetestet Ich habe eine sehr unelegante Lösung, aber ich denke, dass es die Aufgabe erfüllt (vorausgesetzt, Sie haben Excel). Es funktioniert nur, wenn die Anzahl der Dateinamen in Excel passt. (Excel hat eine begrenzte maximale Anzahl von Zeilen: 1.048.576).

Gehen Sie zu cmd (ich gehe davon aus, dass Sie unter Windows sind). Wechseln Sie in das erste Laufwerk. Art:

dir /s/b/o:gn > drive1.txt 

Machen Sie dasselbe für das zweite Laufwerk, ändern Sie jedoch den Namen der TXT-Datei.

Ich habe die cmd-Zeile von: https://stackoverflow.com/questions/3447503/how-to-get-a-list-of-sub-folders-und-their-filesorder- by-folder- names übernommen .

Kopieren Sie beide Ausgaben in Excel (vorausgesetzt 2007 oder neuer). Die einfachste Option, die ich kenne, ist folgende:

  • Wählen Sie die Spalten aus, die die Cmd-Ausgaben enthalten.
  • Klicken Sie auf der Registerkarte Daten in der Gruppe Sortieren und Filtern auf Erweitert.
  • Führen Sie im Dialogfeld "Erweiterter Filter" einen der folgenden Schritte aus:
    • Um den Zellbereich oder die Tabelle an Ort und Stelle zu filtern, klicken Sie auf Liste direkt filtern.
    • Gehen Sie folgendermaßen vor, um die Ergebnisse des Filters an einen anderen Speicherort zu kopieren:
      • Klicken Sie auf An einen anderen Ort kopieren.
      • Geben Sie im Feld Kopieren nach eine Zellenreferenz ein.
  • Klicken Sie alternativ auf Bild ausblenden, um das Dialogfeld vorübergehend auszublenden, wählen Sie eine Zelle im Arbeitsblatt aus und drücken Sie dann auf Bild erweitern.
  • Aktivieren Sie das Kontrollkästchen Nur eindeutige Datensätze, und klicken Sie auf OK.
  • Die eindeutigen Werte aus dem ausgewählten Bereich werden an den neuen Speicherort kopiert. Die Originaldaten sind nicht betroffen.

Auf diese Weise sollten Sie eine Liste aller eindeutigen Dateinamen haben. Dies ist das Gleiche wie eine Liste aller Dateinamen, die nicht kopiert wurden.

Das Excel-Verfahren wurde am Ende übernommen von: https://support.office.com/de-de/article/Filter-for-unique-values-or-remove-duplicate-values-d6549cf0-357a-4acf-9df5- ca507915b704 # bmfilter_for_unique_values

Alternativ können Sie den Befehl cmd in Matlab verwenden.

Der Befehl in Matlab könnte sein:

DosCommand=sprintf('%s %s','dir / B',directory); [status, cmdout]=dos(DosCommand); end Filenames = strread(cmdout,'%s');  

Dann führe aus:

NonCopiedFilenames =   A(sum(bsxfun(@eq, A(:), A(:).'))==1); 

Der Trick zu den einzigartigen Werten wurde kopiert von: https://stackoverflow.com/questions/19236914/how-to-find-a-unique-value-in-a-matrix-by-using-matlab

Wenn Sie kein Excel haben, gibt es [kostenlose Alternativen] (http://www.openoffice.org/) Burgi vor 8 Jahren 1
@BramMooij Entschuldigung, die Excel-Methode hat nicht funktioniert. Ich habe Tausende von Zeilen und es stürzt jedes Mal in Excel ab, selbst wenn mein guter Computer in Echtzeit läuft Baibro vor 8 Jahren 0
Schade. Liegt die Zahl über 1.048.576? In diesem Fall ist es sinnvoll, da dies die Begrenzung der Anzahl der Zeilen in Excel ist. In jedem Fall werde ich dieses Limit zu meiner vorgeschlagenen Antwort hinzufügen. Schön, dass Sie eine andere Lösung gefunden haben. BramMooij vor 8 Jahren 0