С Windows 7 Professional 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" = Целевой диск — жесткий диск или USB-накопитель (флэш-накопитель), замените R на соответствующую букву.
:: DIFF.exe Статус выхода: 0, если входные данные одинаковы, 1, если разные, 2, если возникла проблема.
Но du.exe для текстовых файлов видит вышеприведенный пакетный файл как другой:
г:
CD\
температура компакт-диска
"C:\Program Files\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_d_TEMP.txt
р:
CD\
температура компакт-диска
"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" = Целевой диск — жесткий диск или USB-накопитель (флэш-накопитель), замените R на соответствующую букву.
:: -a = количество записей для всех файлов, а не только каталогов
:: -b = байты, эквивалентно `--apparent-size --block-size=1'
:: -c = total, вывести общую сумму
:: -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 ./Выход 1 .log
52876 ./Q.EXE
58177 .
85224 всего
DU_r_TEMP.txt
908 ./cicon9.gif
297 ./Выход 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
Я немного не решаюсь вынести это на рассмотрение, но у этого есть пара возможных объяснений. Я не знаком с du или diff, но предполагаю, что diff сравнивает файлы и сообщает о различиях, в то время как du сообщает о размерах файлов и каталогов для всех файлов и каталогов. Сводка файлов, скопированных путем просмотра файлов результатов du:
- Всего четыре файла; 2 подкаталога плюс корневой каталог (
.
) - Три файла в корне (
.
) в общей сложности54081байт. Отчеты DU_d_TEMP.txt58177байт, разница4096байты. - Нет файлов непосредственно в каталоге /Help
- Всего один файл в каталоге /Help/HTML18855байт. Однако DU_d_TEMP.txt сообщает27047байт в /Help/HTML, разница в8192байты.
Объяснение 1: На диске D: есть системные/скрытые файлы или соединения, которые Robocopy либо проигнорировал, либо не смог скопировать. Возможно, в другой файловой системе? (интересно, почему-Иксфлаг был использован на du) Этовряд ли, так как Robocopy игнорирует большинство атрибутов исходного файла при выборе файлов для копирования. Однако, если он выбрал файл для копирования, но не смог сделать это, онвозможныйdu и diff могут игнорировать сам файл system/hidden, но du обнаружил, что пространство в этом каталоге было использовано. Не зная полной настройки, файловой системы(-ок), подключенных дисков/машин и т. д. и не видя файл журнала Robocopy, я пока не могу исключить это. Например, см.этот ответна форуме askubuntu о том, что файлы на разделе Windows видны Ubuntu, но не видны Windows.
Объяснение 2: Файловая система на D: хранит файлы иначе, чем файловая система на R:. 4096 байт — это обычный размер сектора на современных дисках, поэтому два больших файла (в отличие от файлов размером менее 1 КБ) в корневом каталоге ( .
) и /Help/HTML/ могут иметь дополнительный сектор (4096байт) или два (8192байт), выделенных файлу, который не используется.
Я не говорю, что это единственные два объяснения, но это двавозможныйобъяснения. Если он у вас еще есть, отправьте файл журнала Robocopyмощьисключить Объяснение 1.