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 

Синхронизация каталогов с разной структурой
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение printer-friendly view
View previous topic :: View next topic  
Author Message
Own Little World



Joined: 07 Jun 2014
Posts: 71

Post (Separately) Posted: Sun Nov 26, 2017 13:45    Post subject: Синхронизация каталогов с разной структурой Reply with quote

Здравствуйте!
В TC есть классная функция, которая называется "Синхронизация каталогов".
К примеру, у меня есть папка "Работы", которая имеет структуру:
    Физика\Ток.docx
    Физика\Свет.ppt
    Химия\Кислоты\Серная.xls
    Химия\Соляная.xls
    Расписание.txt

Мне нужно таскать эту папку на флешке, после прихода домой копировать эту папку на компьютер. С этим "Синхронизация каталогов" справляется на ура.
Проблема возникает, если я изменил структуру каталогов или файлов в папке "Работы". Например, переместил файл "Соляная.xls" из папки Химия в папку Кислоты. Если я попробую сделать синхронизацию с помощью "Синхронизация каталогов", то в результате у меня будут две копии одного файла, но в разных каталогах.
Насколько я знаю, существует "Асимметричная синхронизация", в которой содержимое и структура левой панели копируется в правую. То, что не подходит - удаляется. Вроде под мою задачу подходит, но если файл очень большой? Удалить его, а потом заново копировать? Бред же.
Существует ли программа, которая позволит решить данную проблему.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 8666
Location: Россия, Саратов

Post (Separately) Posted: Sun Nov 26, 2017 15:24    Post subject: Reply with quote

Own Little World
В последней фразе предыдущего поста, насколько понимаю, в конце предполагается знак вопроса? Так вот, чтобы решать проблему, она должна быть. Вместо неё лично я вижу малопонятные фантазии на тему. Вы справку TC не хотите внимательно прочитать и проверить прочитаное на практике, чтобы уясниить реальный принцип синхронизации? В асимметричном режиме в каталоге справа удаляются файлы, которые не существуют в том же каталоге слева. Что вы, интересно, намерены заново в тот же каталог копировать, если у вас одноимённый файл слева уже в другом каталоге (где, насколько понимаю, они теперь и должен находиться)? А если у вас слева файл теперь на новом месте, то справа он на том же месте самопроизвольно не появится, пока вы его не скопируете в ходе синхронизации куда следует. Удаляется файл в одном место, копируется в другое. По-вашему, программа должна догадаться переместить именно его на целевом диске из одного места в другое телепатически? Какая разница, большой файл или нет? И какое ещё решение тут может быть?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5831
Location: Москва

Post (Separately) Posted: Sun Nov 26, 2017 15:43    Post subject: Reply with quote

Avada
Скажем так, я лично не вижу препятствий к тому, чтобы существовала программа, которая при синхронизации ищет соответствия не только каталог-в-каталог, а ещё и между каталогами, чтобы не удалять+копировать большой файл-дубликат, а всего лишь переименовать/переместить его в новое место, сэкономив тем самым время синхронизации. Другой вопрос, что такой готовой программы я тоже не знаю.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Own Little World



Joined: 07 Jun 2014
Posts: 71

Post (Separately) Posted: Sun Nov 26, 2017 15:51    Post subject: Reply with quote

Avada wrote:
Own Little World
В последней фразе предыдущего поста, насколько понимаю, в конце предполагается знак вопроса?
Ага.
Avada wrote:
Удаляется файл в одном место, копируется в другое.
Вот именно это мне и не нравится. Есть у меня допустим две папки с фильмами, которые я должен синхронизировать. В одной папке все фильмы разложены аккуратно по каталогам, а во второй - все в куче. При этом фильмы абсолютно одинаковы, т.е. папки имеют одинаковый объем.
Я делаю ассиметричную синхронизацию (левая панель - "аккуратная" папка, правая панель - "неаккуратная" папка). TC видит, что в "неаккуратной" папке нет никаких подкаталогов, он их создает. Он видит, что в созданных каталогах нет фильмов. Он копирует их из первой папки. TC видит, что в "неаккуратной" папке есть какие-то фильмы, которых нет в первой. Он их удаляет.
Получается, что банальная операция перемещения фильмов по подкаталогам (которая выполняется за секунды), при синхронизации в TC может занять часы.
Avada wrote:
По-вашему, программа должна догадаться переместить именно его на целевом диске из одного места в другое телепатически?
Телепатически, математически, физически - как пользователя, меня эту не волнует.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 8666
Location: Россия, Саратов

Post (Separately) Posted: Sun Nov 26, 2017 15:54    Post subject: Reply with quote

CaptainFlint
Я всё это чисто теоретически понимаю. Что-то подобное неоднократно на разных форумах запрашивалось, но как-то тихо сходило на нет после вопроса, как такая программа должна выполнять исходное сканирование для обнаружения подобных сопоставлений, как нужные соответствия одинаковых файлов в разных каталогах отличить в этом случае от ненужных и, главное, сколько времени это всё вообще займёт. А выше, между тем, было высказано недовольство, что большой файл удаляется и копируется долго. Сэкономив время синхронизации, сколько мы до этого потеряем на увеличении времени такого интеллектуального сканирования?

Own Little World wrote:
Телепатически, математически, физически - как пользователя, меня эту не волнует.

И напрасно. Меня не то что волнует, но полагаю, перед программой надо ставить реальные, а не фантастические задачи, если действительно нужно решение проблемы, а не "игра ума". Во всяком случае, мне средства синхронизации, работающие точно по запрошенному алгоритмы, неизвестны.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Own Little World



Joined: 07 Jun 2014
Posts: 71

Post (Separately) Posted: Sun Nov 26, 2017 16:08    Post subject: Reply with quote

CaptainFlint wrote:
Другой вопрос, что такой готовой программы я тоже не знаю.
Очень жаль. А так хотелось.

Добавлено спустя 2 минуты:

Avada wrote:
главное, сколько времени это всё вообще займёт. А выше, между тем, было высказано недовольство, что большой файл удаляется и копируется долго.
Операция чтения выполняется всяко быстрее, чем операция записи.

Добавлено спустя 4 минуты:

Avada, CaptainFlint спасибо за ответы.
Если подытожить все выше написанное, то программ, выполняющих "интеллектуальную синхронизацию" нет, и скорее всего не будет.
Ну и ладно, придется все делать по старинке.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 8666
Location: Россия, Саратов

Post (Separately) Posted: Sun Nov 26, 2017 16:19    Post subject: Reply with quote

Own Little World wrote:
Операция чтения выполняется всяко быстрее, чем операция записи.

Ага. В общем и целом. Только вот печаль: записываются по итогам сравнения конкретные файлы, а читаться сначала должно ВСЁ. Даже в стандартном функционале TC построение файловых списков справа и слева и их последующее сравнение (особливо по содержимому) — штука не очень быстрая, когда файлов много и/или они большие. А в режиме "сравниваем всё со всем" — и подавно. Вам бы сильно понравился вариант инструмента синхронизации, когда на КАЖДЫЙ файл слева последовательно ищутся в процессе построения списка ВСЕ дубликаты справа, невзирая на их местоположение?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12062
Location: Москва

Post (Separately) Posted: Sun Nov 26, 2017 20:53    Post subject: Reply with quote

Avada wrote:
когда на КАЖДЫЙ файл слева последовательно ищутся в процессе построения списка ВСЕ дубликаты справа
По логике это делалось бы иначе. Сперва подсчитывались бы хэши с обеих сторон, а потом происходил бы быстрый поиск в коллекции подсчитанных хэшей для сопоставления с каждым файлом слева. Или как при поиске дубликатов — при возникновении нового хэша создавалась бы коллекция-группа. Только мне непонятно, как бы эта затея в GUI выглядела. Без шкуры скрипт-то написать можно.

Own Little World
Я на вашем месте создавал бы дерево с симлинками/хардлинками (см. NTLinksMaker), а потом в общей папке делал бы поиск дубликатов с последующим удалением лишнего.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 68

Post (Separately) Posted: Sun Nov 26, 2017 22:18    Post subject: Reply with quote

Own Little World, я написал программу, которая подходит под вашу задачу.

Но она пока не сравнивает по содержимому. Только имя и размер.

Хотите попробовать?
Back to top
View user's profile Send private message
Own Little World



Joined: 07 Jun 2014
Posts: 71

Post (Separately) Posted: Sun Nov 26, 2017 23:10    Post subject: Reply with quote

Zmy wrote:

Хотите попробовать?
Конечно!
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 68

Post (Separately) Posted: Sun Nov 26, 2017 23:25    Post subject: Reply with quote

Скачиваете SynDir.exe.
Описание её работы находится в файле Description.htm.

https://cloud.mail.ru/public/HJDJ/dzZnShFi8

Я её практически не тестировал.
Вы, я думаю, понимаете, что на важных файлах опасно производить подобные манипуляции.
Хорошо её потестируйте на неважных файлах.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12062
Location: Москва

Post (Separately) Posted: Mon Nov 27, 2017 00:03    Post subject: Reply with quote

Zmy
В мануале слишком много ошибок разного калибра. Стоило бы это всё в божеский вид приводить перед выкладкой.

Quote:
Понимаете смысл?
Огромный каталог, с файлами по несколько гигабайт, будут сначала удаляться, а потом они же будут копироваться из источника,
когда можно только поменять ихний адрес в главной файловой таблице (MFT), при этом ничего не удаляя. Жёсткий диск будет вам за это бесконенчно благодарен.
Не, не понимаю...
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 68

Post (Separately) Posted: Mon Nov 27, 2017 00:04    Post subject: Reply with quote

 !  CaptainFlint:
Строгое замечание за нарушение пп. 3, 9 правил. Исходное сообщение удалено.


Добавлено спустя 2 часа 26 минут:

flasher wrote:
Не, не понимаю...


Что не понятно?

 !  CaptainFlint:
Дубль дописанного сообщения удалён за бессмысленностью оного. Форум — это не чат, вам никто не обязан круглосуточно мониторить и мгновенно отвечать на сообщения.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 68

Post (Separately) Posted: Mon Nov 27, 2017 20:46    Post subject: Reply with quote

Own Little World, перекачайте.

Теперь программа умеет сравнивать по содержимому. Хорошо её потестируйте.

Текущая версия 3.0.2.0.
Back to top
View user's profile Send private message
Own Little World



Joined: 07 Jun 2014
Posts: 71

Post (Separately) Posted: Sat Dec 09, 2017 21:23    Post subject: Reply with quote

Zmy
Наконец-то смог добраться до вашей программы!
Я пользовался ей один раз (как раз для синхронизации каталогов с разной структурой и с обновленными файлами). В целом, программа сработала на ура, но была пара ошибок:
1. Программа не работает с длинными абсолютными именами файлов (>259). У меня были подкаталоги с проектами Inventor (это 3d САПР). Inventor имеет привычку создавать длинные имена файлов (вернее, длинные пути к именам файлов). Программа SynDir просто удалила эти файлы из ЦЕЛИ (они там уже были). В ИСТОЧНИКЕ они остались, с помощью синхронизации TC я с легкостью восстановил их.
2. Почему-то при работе в режиме без сравнения по содержимому у меня не синхронизировался один файл *.doc, хотя даты изменения были различны (SynDir просто проигнорировала этот файл). При синхронизации в режиме сравнения по содержимому файл был успешно синхронизирован.
Еще меня огорчило отсутствие хотя бы минимального прогрессбара. Т.е., если программа зависнет, я даже не буду этого знать. Но это мелочи.

Кстати, на просторах интернета я нашел программу FreFileSync. Если вкратце, она тоже позволяет синхронизировать каталоги с разной структурой, плюс она имеет схожий со встроенным в TC средством синхронизации интерфейс (показывает направление копирования/перемещения, можно применить фильтр).
Но она имеет минус. Для синхронизации каталогов с разной структурой, она создает файл *.ffs_db в каталоге. Т.е. при первой синхронизации, в отличии от программы SynDir, она не сможет перемещать файлы внутри каталога и будет действовать напролом (как TC). При второй и последующих синхронизациях программа уже будет перемещать файлы внутри каталога вместо его удаления и последующего копирования.

Тем не менее, Zmy, спасибо за программу. Пусть и с огрехами, но она позволила наконец-то навести порядок в моих папках, а потом с легкостью синхронизировать их за небольшое время.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group