Mit Windows 7 Professional 64-Bit ...
habe eine Batchdatei und RoboCopy.exe zum Kopieren verwendet
4 Dateien und 2 Verzeichnisse von
c:\temp = SDD (Solid State Drive) nach
r:\temp = USB-Stick (Flash-Laufwerk) mit Befehl:
"C:\WINDOWS\system32\ROBOCOPY.EXE" "D:\TEMP" "R:\TEMP" /V /TEE /S /E /COPY:DAT /DCOPY:T /NP /XJ /R:1000000 /W:30 /LOG:r:\RoboCopyInfo.LOG
Frage: Warum
sieht diff.exe bei den obigen Kopierbefehlsergebnissen über RoboCopy „Ok, kein Fehler“, aber
bei du.exe in Textdateien wird ein Unterschied erkannt?
"C:\Programme\Gow\bin\DIFF.exe" -q -r "D:\TEMP" "R:\TEMP"
:: DIFF.exe = diff (GNU-Diffutils) 2.8.7 https://github.com/bmatzelle/gow/releases
:: -q = Gibt nur aus, ob sich die Dateien unterscheiden.
:: -r = Alle gefundenen Unterverzeichnisse rekursiv vergleichen.
:: "D:\TEMP" = Quelldateien auf SDD (Solid State Drive).
:: „R:\TEMP“ = Ziellaufwerk ist Festplatte oder USB-Stick (Flash-Laufwerk), ersetzen Sie R durch den entsprechenden Buchstaben.
:: Der Beendigungsstatus von DIFF.exe ist 0, wenn die Eingaben gleich sind, 1, wenn sie unterschiedlich sind, und 2, wenn ein Problem vorliegt.
Aber du.exe sieht in Textdateien wie oben anders aus, Batchdatei:
D:
CD\
CD-Temperatur
"C:\Programme\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_d_TEMP.txt
R:
CD\
CD-Temperatur
"C:\Programme\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_r_TEMP.txt
:: du.exe = Datenträgernutzung (GNU coreutils) 5.3.0 https://github.com/bmatzelle/gow/releases
:: "D:\TEMP" = Quelldateien auf SDD (Solid State Drive).
:: „R:\TEMP“ = Ziellaufwerk ist Festplatte oder USB-Stick (Flash-Laufwerk), ersetzen Sie R durch den entsprechenden Buchstaben.
:: -a = Schreibzähler für alle Dateien, nicht nur für Verzeichnisse
:: -b = Bytes, entspricht „--apparent-size --block-size=1“
:: -c = total, Gesamtsumme erstellen
:: -P = --no-dereference, keinen symbolischen Links folgen (das ist die Standardeinstellung)
:: -S = --separate-dirs, Größe von Unterverzeichnissen nicht einbeziehen
:: -x = --one-file-system Verzeichnisse auf verschiedenen Dateisystemen überspringen
DU_d_TEMP.txt
908 ./cicon9.gif
18855 ./Hilfe/HTML/usage.htm
27047 ./Hilfe/HTML
0 ./Hilfe
297 ./Ausgabe 1 .log
52876 ./Q.EXE
58177 .
85224 gesamt
DU_r_TEMP.txt
908 ./cicon9.gif
297 ./Ausgabe 1 .log
52876 ./Q.EXE
18855 ./Hilfe/HTML/usage.htm
18855 ./Hilfe/HTML
0 ./Hilfe
54081 .
72936 gesamt
du.exe Textdateien sieht einen Unterschied von
12288 Bytes (85224 - 72936)
Frage: Warum
sieht diff.exe bei den obigen Kopierbefehlsergebnissen über RoboCopy „Ok, kein Fehler“, aber
bei du.exe in Textdateien wird ein Unterschied erkannt?
--
Antwort1
Ich zögere ein bisschen, dies als Antwort zu posten, aber es gibt ein paar mögliche Erklärungen. Ich bin weder mit du noch mit diff vertraut, aber ich gehe davon aus, dass diff Dateien vergleicht und Unterschiede meldet, während du Datei- und Verzeichnisgrößen für alle Dateien und Verzeichnisse meldet. Zusammenfassung der kopierten Dateien durch Betrachten der du-Ergebnisdateien:
- Insgesamt vier Dateien; 2 Unterverzeichnisse plus das Stammverzeichnis (
.
) - Drei Dateien im Stammverzeichnis (
.
) mit insgesamt54081Bytes. DU_d_TEMP.txt meldet58177Bytes, eine Differenz von4096Bytes. - Keine Dateien direkt im /Help-Verzeichnis
- Eine Datei im Verzeichnis /Help/HTML mit18855Bytes. DU_d_TEMP.txt meldet jedoch27047Bytes in /Help/HTML, ein Unterschied von8192Bytes.
Erläuterung 1: Es gibt System-/versteckte Dateien oder Junctions auf D:, die Robocopy entweder ignoriert hat oder nicht kopieren konnte. Möglicherweise auf einem anderen Dateisystem? (Ich frage mich, warum die-XFlagge wurde auf du verwendet) Dies istunwahrscheinlich, da Robocopy die meisten Quelldateiattribute bei der Auswahl der zu kopierenden Dateien ignoriert. Wenn Robocopy jedoch die zu kopierende Datei ausgewählt hat, dies aber nicht konnte, ist esmöglichdu und diff ignorieren möglicherweise die System-/versteckte Datei selbst, aber du hat erkannt, dass der Speicherplatz in diesem Verzeichnis verwendet wurde. Ohne das vollständige Setup, die Dateisysteme, die angeschlossenen Laufwerke/Maschinen usw. zu kennen oder die Robocopy-Protokolldatei zu sehen, kann ich dies noch nicht ausschließen. Siehe beispielsweisediese Antwortim Askubuntu-Forum bezüglich Dateien auf einer Windows-Partition, die von Ubuntu, aber nicht von Windows gesehen werden können.
Erläuterung 2: Das Dateisystem auf D: speichert Dateien anders als das Dateisystem auf R:. 4096 Bytes ist eine übliche Sektorgröße auf modernen Laufwerken, daher .
können die beiden größeren Dateien (im Gegensatz zu den Dateien unter 1 KB) in den Stammverzeichnissen ( ) und /Help/HTML/ einen zusätzlichen Sektor (4096Bytes) oder zwei (8192Bytes) der Datei zugewiesen, die nicht verwendet werden.
Ich sage nicht, dass dies die einzigen beiden Erklärungen sind, aber dies sind zweimöglichErklärungen. Wenn Sie es noch haben, veröffentlichen Sie die Robocopy-ProtokolldateikönnteErklärung 1 ausschließen.