Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: NTLinks + NTLinksMaker: создание и инфо о ссылках NTFS 
Author Message
чилавек



PostPosted: Fri Apr 24, 2020 23:09    Post subject: Reply with quote

Обнаружился неприятный баг, которого не было по крайней мере в версии 1.2.0.340, но присутствует в нескольких крайних версиях, включая 1.4.2.434.

Исходные условия:
- есть папка-источник с наполнением (подпапки и файлы в несколько уровней);
- есть папка-получатель, в которой необходимо создать хардлинки на все файлы, находящиеся в папке-источнике с сохранением структуры дерева подпапок.

Если папка-получатель пуста или хотя бы не содержит одноименных создаваемым хардлинкам файлов - все отлично: получаем все необходимые файлы (жесткие ссылки).

Если папка-получатель уже содержит некоторые файлы, ссылки на которые должны быть созданы, то после соответствующего предупреждения ("невозможно создать файл, так как он уже существует") и выбора либо единожды "Пропустить все", либо n-ное кол-во раз просто "Пропустить" имеем:
- при создании линков из режима TC "все файлы без подкаталогов" (Ctrl+B) и установленной галкой "Сохранять части путей..." - все отлично: существующие файлы папки-получателя остаются, недостающие добавляются хардлинками из папки-источника;
- при создании линков из обычного режима ТС (выделение папок/файлов) - БАГ: хардлинки создаются ровно до первой коллизии - при встрече первого же существующего файла дальнейшее создание ссылок обрывается для всего оставшегося дерева папки, в которой обнаружен одноименный файл, а продолжается только с папки уровнем выше. Другими словами, в данном случае по нажатии "Пропустить" ("Пропустить все") выполняется пропуск не только существующего файла, но и всех оставшихся файлов и папок в текущей папке, то есть происходит переход не к следующему файлу а сразу к следующей папке и находящимся уже в ней файлам...

Для простоты воспроизведения жучары вот my-files.su/bmxkgm архив с необходимым набором папок/файлов источника и получателя (соответственно Dir_src и Dir_dst). Параметры вызова NTLinksMaker.exe из ТС '/l=99 /q- /b /r="%P" "@%WL" "%T"'. На панели-получателе TC заходим внутрь Dir_dst, на активной заходим в Dir_src, отмечаем все содержимое и пытаемся создать ссылки - в режиме Ctrl+B все ОКы; в обычном режиме - БАГъ: с dir1 все хорошо, в dir2 скопированы dir21 и частично dir22 (file1_dir22.txt, file2_dir22.txt, file3_dir22.txt - все оборвалось на существующем file3_dir22.txt) dir23 уже не копировалась; продолжилось копирование с dir3, но сразу же и оборвалось, напоровшись на первый существующий в dir31 файл file1_dir31.txt.


И, да, несмотря на баг, автору выражаю благодарность и уважение за сию необходимую и весьма полезную в хозяйстве утилиту!!!
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group