1

С Windows 7 Профессиональная 64 бит ...

использовал пакетный файл и RoboCopy.exe для копирования

4 файла и 2 каталога из
c:\temp = SDD (твердотельный накопитель) для

r:\temp = USB-накопитель (флешка) с командой:

"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

Вопрос: почему
diff.exe см. выше результаты команды копирования через RoboCopy, как ОК, без ошибок, но,
du.exe к текстовым файлам видит разницу?

"C:\Program Files\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 = Вывести только, если файлы отличаются.

:: -r = Рекурсивно сравнивать любые найденные подкаталоги.

:: "D:\TEMP" = Исходные файлы на SDD (твердотельный накопитель).

:: "R:\TEMP" = Целевым диском является жесткий диск или флешка, замените букву R на соответствующую букву.

:: DIFF.exe Статус выхода равен 0, если входы одинаковы, 1, если отличается, 2, если проблема.

Но, du.exe для текстовых файлов выглядит выше, как разные, командный файл:

д:

CD\

CD Temp

"C:\Program Files\Gow\bin\du.exe" -a -b -c -P -S -x> r:\DU_d_TEMP.txt

р:

CD\

CD Temp

"C:\Program Files\Gow\bin\du.exe" -a -b -c -P -S -x> r:\DU_r_TEMP.txt

:: du.exe = Использование диска (GNU coreutils) 5.3.0 https://github.com/bmatzelle/gow/releases

:: "D:\TEMP" = Исходные файлы на SDD (твердотельный накопитель).

:: "R:\TEMP" = Целевым диском является жесткий диск или флешка, замените букву R на соответствующую букву.

:: -a = количество записей для всех файлов, а не только для каталогов

:: -b = байты, эквивалентные `--apparent-size --block-size = 1 '

:: -c = итого, произвести итоговую сумму

:: -P = --no-dereference, не переходить по символическим ссылкам (это по умолчанию)

:: -S = --separate-dirs, не включать размер подкаталогов

:: -x = --one-file-system пропустить каталоги в разных файловых системах


DU_d_TEMP.txt

908 ./cicon9.gif

18855/Help/HTML/usage.htm

27047/ Помощь / HTML

0/Помогите

297/OutPut 1 .log

52876./Q.EXE

58177.

85224 всего


DU_r_TEMP.txt

908 ./cicon9.gif

297/OutPut 1 .log

52876./Q.EXE

18855/Help/HTML/usage.htm

18855/ Помощь / HTML

0/Помогите

54081.

Всего 72936


Текстовые файлы du.exe видят разницу

12288 байт (85224 - 72936)

Вопрос: почему
diff.exe см. выше результаты команды копирования через RoboCopy, как ОК, без ошибок, но,
du.exe к текстовым файлам видит разницу?

-

1 ответ1

0

Я как бы затрудняюсь представить это как ответ, но у него есть пара возможных объяснений. Я не знаком с du или diff, но я предполагаю, что diff сравнивает файлы и сообщает о различиях, в то время как du сообщает о размерах файлов и каталогов для всех файлов и каталогов. Сводка файлов, скопированных путем просмотра файлов результатов du:

  1. Всего четыре файла; 2 подкаталога плюс корневой каталог (.)
  2. Три файла в корне (.) Общим объемом 54081 байт. DU_d_TEMP.txt сообщает 58177 байт, разница в 4096 байт.
  3. Нет файлов непосредственно в /Help dir
  4. Один файл в /Help /HTML dir общим объемом 18855 байт. Тем не менее, DU_d_TEMP.txt сообщает о 27047 байтах в /Help /HTML, разница в 8192 байта.

Объяснение 1: На D есть системные / скрытые файлы или соединения: Robocopy либо проигнорировал, либо не смог скопировать. Возможно, в другой файловой системе? (интересно, почему на du был использован флаг -x ) Это маловероятно, поскольку Robocopy игнорирует большинство атрибутов исходного файла при выборе файлов для копирования. Однако, если он выбрал файл для копирования, но не смог, возможно, du и diff могут игнорировать сам системный / скрытый файл, но du обнаружил, что в этом каталоге использовалось пространство. Не зная полной настройки, файловой системы (систем), подключенных дисков / машин и т.д., А также не увидев файл журнала Robocopy, я пока не могу это исключить. Например, посмотрите этот ответ на форуме askubuntu относительно файлов в разделе Windows, которые могут видеть Ubuntu, но не Windows.

Объяснение 2: Файловая система на D: хранит файлы не так, как файловая система на R:. 4096 байт - это общий размер сектора на современных дисках, поэтому два больших файла (в отличие от файлов размером менее 1 КБ) в корневом каталоге (.) И /Help /HTML / могут иметь дополнительный сектор (4096 байт) или два (8192 байта) выделено для файла, который не используется.

Я не говорю, что это только два объяснения, но это два возможных объяснения. Если он все еще у вас есть, публикация файла журнала Robocopy может исключить объяснение 1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .