Page 1 of 2

Портит файл при копировании

Posted: Thu 14 Jan, 2016 07:10
by 25080206
Хочу помочь проекту!
Итак, столкнулся с опасной проблемой... Заметил случайно. При копировании одного файла, копирование происходит подозрительно быстро (файл 4 гигабайта, должен копироваться не меньше 15 секунд, а тут примерно за секунду), без ошибок, после копирования файлы НЕ ИДЕНТИЧНЫ, Advanced compare при сравнении по контенту. Т.е. копия бита, а юзер никак не узнает об этом.
Windows 7 x64, FAR 3.0 build 4242 x64.
После обновления до актуальной версии 3.0 build 4505 x64 проблема сохраняется.
Стандартным эксплорером файл копируется нормально, также файл нормально копируется ФАРом при включенной опции "Use system copy routine"...
Баг опасный и повторяется стабильно, но я не особый специалист - хочу помочь проекту, могу предоставить доступ к компьютеру через teamviewer - если кто знающий подключится и исследует проблему, отчего так происходит... будет весьма неплохо.
Извиняюсь за сумбур, но косячок действительно неприятный, потенциальная потеря данных, пусть и случайный, но вдруг еще когда такое повторится, особенно, при переносе, а не копировании. Не утверждаю, что это глюк FAR'а - может быть, причина и не в нем, но файл при копировании "бьется" и никакого предупреждения о том, что копирование прошло неуспешно, нет.

Портит файл при копировании

Posted: Thu 14 Jan, 2016 08:06
by 2useven10
Какие флаги у файла выствлены (Ctrl-A на файле) ?

Портит файл при копировании

Posted: Thu 14 Jan, 2016 09:16
by 25080206
2useven10 wrote:Какие флаги у файла выствлены (Ctrl-A на файле) ?

Code: Select all

╔═══════════════════════════ Attributes ═══════════════════════════╗
║                    Change file attributes for                    ║
║   [TechTools.net] Microsoft Windows 10 5in1 November (x64).iso   ║
╟──────────────────────────────────────────────────────────────────╢
║ Owner:       BUILTIN\Administrators                              ║
╟──────────────────────────────────────────────────────────────────╢
║ [x] Read only                   [x] Sparse                       ║
║ [x] Archive                     [ ] Temporary                    ║
║ [ ] Hidden                      [ ] Offline                      ║
║ [ ] System                      [ ] Reparse point                ║
║ [x] Compressed                  [ ] Virtual                      ║
║ [ ] Encrypted                   [ ] Integrity stream             ║
║ [ ] Not indexed                 [ ] No scrub data                ║
╟──────────────────────────────────────────────────────────────────╢
║                                         MM/DD/YYYYY hh:mm:ss.ms  ║
║ Last write time:                        01/14/2016  08:38:48.268 ║
║ Creation time:                          01/13/2016  13:12:18.356 ║
║ Last access time:                       01/14/2016  11:20:38.004 ║
║ Change time:                            01/14/2016  10:09:28.028 ║
║                [ Original ] [ Current ] [ Blank ]                ║
╟──────────────────────────────────────────────────────────────────╢
║             { Set } [ System properties ] [ Cancel ]             ║
╚══════════════════════════════════════════════════════════════════╝

Портит файл при копировании

Posted: Thu 14 Jan, 2016 09:17
by 25080206
Если есть способ включить подробное логирование или еще что-то диагностическое - говорите как, сделаю.

Портит файл при копировании

Posted: Thu 14 Jan, 2016 12:19
by 2useven10
Что использовали, чтобы сделать файл разреженным ([x] Sparse) ?

Портит файл при копировании

Posted: Thu 14 Jan, 2016 13:50
by HaRT
25080206 wrote: файл 4 гигабайта, должен копироваться не меньше 15 секунд, а тут примерно за секунду
Если я правильно понимаю, что такое разреженный (sparse) файл, то такая быстрота не обязательно свидетельствует об ошибке.
25080206 wrote: файлы НЕ ИДЕНТИЧНЫ, Advanced compare при сравнении по контенту
В принципе ошибка может быть в плагине при обработке разреженных файлов. У Вас там настроено полное или выборочное сравнение контента?
И что говорят другие средства сравнения, хоть тот же fc.exe /b?

Портит файл при копировании

Posted: Thu 14 Jan, 2016 19:35
by DrKnS
2useven10 wrote: Что использовали, чтобы сделать файл разреженным ([x] Sparse) ?
Рискну предположить, что, судя по характерному названию файла, какой-нибудь µTorrent.

Фар копирует разреженные файлы с оптимизацией - копируются только реально занятые участки, так что проблема потенциально возможна, да.
Доступ к вашему компьютеру без установленной там студии имеет очень мало смысла, а просить вас выложить файл с интеллектуальной собственностью третьих лиц как-то не кошерно.
Выполните у себя там команду fsutil sparse queryrange "[TechTools.net] Microsoft Windows 10 5in1 November (x64).iso" > ranges.txt и приложите полученный ranges.txt сюда, вместе с точным размером файла, попробуем повторить.

И да, как уже посоветовали, fc.exe /b и, если будут различия, напишите, с какого адреса они начинаются.

Портит файл при копировании

Posted: Fri 15 Jan, 2016 05:17
by 25080206
Ничего не делал специально для этого - файл таким "упал" с торрентов, был создан в процессе работы uTorrent 3.4.5 build 41372.

Здесь наблюдается именно "болезненная" быстрота - копируется некоторое количество данных из начала файла и далее нули.

fc /b говорит:

Code: Select all

Comparing files D:\FAR_BUG\BAD\[TechTools.net] Microsoft Windows 10 5in1 November (x64).iso and D:\FAR_BUG\OK\[TECHTOOLS.NET] MICROSOFT WINDOWS 10 5IN1 NOVEMBER (X64).ISO
04E70000: 00 89
04E70001: 00 18
04E70002: 00 A6
04E70003: 00 35
04E70004: 00 23
04E70005: 00 B2
04E70006: 00 EE
04E70007: 00 12
04E70008: 00 17
04E70009: 00 04
04E7000A: 00 B3
04E7000B: 00 E9
04E7000C: 00 56
04E7000D: 00 66
04E7000E: 00 6D
04E7000F: 00 5A
04E70010: 00 45
04E70011: 00 C9
04E70012: 00 0A
04E70013: 00 3A
04E70014: 00 8A
04E70015: 00 7D
04E70016: 00 67
04E70017: 00 5B
04E70018: 00 AA
04E70019: 00 6A
04E7001A: 00 DE
04E7001B: 00 F8
04E7001C: 00 C1
04E7001D: 00 A4
04E7001E: 00 6A
04E7001F: 00 A0
04E70020: 00 11
04E70021: 00 1A
04E70022: 00 3F
04E70023: 00 A5
04E70024: 00 49
04E70025: 00 1B
04E70026: 00 DF
04E70027: 00 2B
04E70028: 00 5A
04E70029: 00 E9
04E7002A: 00 0C
04E7002B: 00 94
04E7002C: 00 6D
04E7002D: 00 9D
04E7002E: 00 40

Портит файл при копировании

Posted: Fri 15 Jan, 2016 05:54
by 25080206
Про интеллектуальную собственность - это дистрибутив винды без лекарства - почти такой же они дают сами бесплатно-триально, вот активатор ата-та (если кому-то не пофиг), но оный по другой ссылке :-)

fsutil sparse queryrange "[TechTools.net] Microsoft Windows 10 5in1 November (x64).iso" > ranges.txt

Code: Select all

D:\FAR_bug\ranges.txt
sparse range: [0] [65536]
sparse range: [524288] [1507328]
sparse range: [2555904] [2031616]
sparse range: [4784128] [1835008]
sparse range: [7077888] [2359296]
sparse range: [9633792] [4367581184]
sparse range: [4377804800] [917504]
sparse range: [4379246592] [13721600]
Начиная с 04E70000 пошли нули...

А вообще вот архивчик на облаке - пароль 123qwerty прикрывает чужую интеллектуальную собственность от косых взглядов - https://cloud.mail.ru/public/5gnw/B2yWHKnZo

И пруфвидео с экрана, как это все выглядит - https://youtu.be/fFy6404eMfk

Загрузка в процессе, смотрите через полчасика.

Портит файл при копировании

Posted: Fri 15 Jan, 2016 09:08
by DrKnS
Исправлено в 4510.

Портит файл при копировании

Posted: Fri 15 Jan, 2016 09:40
by 25080206
Всегда рад помочь! :-)

Портит файл при копировании

Posted: Fri 15 Jan, 2016 10:15
by 25080206
Спасибо, баг задавлен!

Портит файл при копировании

Posted: Sat 27 Jul, 2019 15:08
by Nicko
Решил проверить, как работают распределённые файлы и вот что вышло:

1) Отформатировал разделы в NTFS и ReFS
2) Отключил в uTorrent "Распределять все файлы"
3) Начал закачку торрента и тут же нажал СТОП
4) В uTorrent была видна тоненькая полосочка в графике загрузки, пересчитал хэш - пропала
5) скопировал файл FARом на другой диск
5) запустил fsutil sparse queryflag на оба файла - показало пустую область на всю длину файла
6) запустил fc /b - показывает, что файлы различаются, сравнение Total Commander'ом тоже показало, что файлы различаются

Дубль два
1) Начал закачку торрента и тут же нажал СТОП
2) скопировал файл FARом на другой диск
3) запустил fsutil sparse queryflag на оба файла - показало в оригинале Выделенный диапазон [1]: Смещение: 0x1dc9000 Длина: 0x2d000, в копии Выделенный диапазон [1]: Смещение: 0x1dc0000 Длина: 0x40000

Может кто-нибудь пояснить, как так получается?

Портит файл при копировании

Posted: Sat 27 Jul, 2019 15:24
by Nicko
Ещё детали:

1) Система - Windows 10 1903 x64
2) FAR - 3.0.5400 x64, запущен под администратором

3) Если в uTorrent выбрать "Загружать в..." и указать другой диск - файлы становятся обычными, а не распределёнными
4) Если запустить "Оптимизация дисков" Windows и попробовать оптимизировать этот диск, пишет "Требуется оптимизация (Фрагментировано: 24%), и это при том, что диск пустой, NTFS и на нём лишь один скопированный файл

Портит файл при копировании

Posted: Sat 27 Jul, 2019 15:40
by Nicko
Жаль, что на этом форуме нельзя (или я не нашёл как) редактировать сообщения.

1) Дефрагментатор вообще не дружит с распределёнными файлами, а не только плохо скопированными.

2) В Total Commander была поддержка распределённых файлов, но много лет назад автор отказался от собственных функций копирования и стал использовать CopyFileEx. Не смотря на это, в HELPе TC указано, что:
Use default method only
The default built in copy method (via ReadFile/WriteFile) is relatively slow, but also reliable.
3) Попробовал проделать все операции с файлом размера 5 Гбайт, а не 20-40 Мбайт, и ничего подобного смоделировать не мог. Возможно, что это связано с размерам блока самого торрента и работой uTorrent.