Синхронизация каталогов с разной структурой
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Программное обеспечение

#1: Синхронизация каталогов с разной структурой Author: Own Little World PostPosted: Sun Nov 26, 2017 13:45
    —
Здравствуйте!
В TC есть классная функция, которая называется "Синхронизация каталогов".
К примеру, у меня есть папка "Работы", которая имеет структуру:

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

#2:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Nov 26, 2017 15:24
    —
Own Little World
В последней фразе предыдущего поста, насколько понимаю, в конце предполагается знак вопроса? Так вот, чтобы решать проблему, она должна быть. Вместо неё лично я вижу малопонятные фантазии на тему. Вы справку TC не хотите внимательно прочитать и проверить прочитаное на практике, чтобы уясниить реальный принцип синхронизации? В асимметричном режиме в каталоге справа удаляются файлы, которые не существуют в том же каталоге слева. Что вы, интересно, намерены заново в тот же каталог копировать, если у вас одноимённый файл слева уже в другом каталоге (где, насколько понимаю, они теперь и должен находиться)? А если у вас слева файл теперь на новом месте, то справа он на том же месте самопроизвольно не появится, пока вы его не скопируете в ходе синхронизации куда следует. Удаляется файл в одном место, копируется в другое. По-вашему, программа должна догадаться переместить именно его на целевом диске из одного места в другое телепатически? Какая разница, большой файл или нет? И какое ещё решение тут может быть?

#3:  Author: CaptainFlintLocation: Москва PostPosted: Sun Nov 26, 2017 15:43
    —
Avada
Скажем так, я лично не вижу препятствий к тому, чтобы существовала программа, которая при синхронизации ищет соответствия не только каталог-в-каталог, а ещё и между каталогами, чтобы не удалять+копировать большой файл-дубликат, а всего лишь переименовать/переместить его в новое место, сэкономив тем самым время синхронизации. Другой вопрос, что такой готовой программы я тоже не знаю.

#4:  Author: Own Little World PostPosted: Sun Nov 26, 2017 15:51
    —
Avada wrote:
Own Little World
В последней фразе предыдущего поста, насколько понимаю, в конце предполагается знак вопроса?
Ага.
Avada wrote:
Удаляется файл в одном место, копируется в другое.
Вот именно это мне и не нравится. Есть у меня допустим две папки с фильмами, которые я должен синхронизировать. В одной папке все фильмы разложены аккуратно по каталогам, а во второй - все в куче. При этом фильмы абсолютно одинаковы, т.е. папки имеют одинаковый объем.
Я делаю ассиметричную синхронизацию (левая панель - "аккуратная" папка, правая панель - "неаккуратная" папка). TC видит, что в "неаккуратной" папке нет никаких подкаталогов, он их создает. Он видит, что в созданных каталогах нет фильмов. Он копирует их из первой папки. TC видит, что в "неаккуратной" папке есть какие-то фильмы, которых нет в первой. Он их удаляет.
Получается, что банальная операция перемещения фильмов по подкаталогам (которая выполняется за секунды), при синхронизации в TC может занять часы.
Avada wrote:
По-вашему, программа должна догадаться переместить именно его на целевом диске из одного места в другое телепатически?
Телепатически, математически, физически - как пользователя, меня эту не волнует.

#5:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Nov 26, 2017 15:54
    —
CaptainFlint
Я всё это чисто теоретически понимаю. Что-то подобное неоднократно на разных форумах запрашивалось, но как-то тихо сходило на нет после вопроса, как такая программа должна выполнять исходное сканирование для обнаружения подобных сопоставлений, как нужные соответствия одинаковых файлов в разных каталогах отличить в этом случае от ненужных и, главное, сколько времени это всё вообще займёт. А выше, между тем, было высказано недовольство, что большой файл удаляется и копируется долго. Сэкономив время синхронизации, сколько мы до этого потеряем на увеличении времени такого интеллектуального сканирования?

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

И напрасно. Меня не то что волнует, но полагаю, перед программой надо ставить реальные, а не фантастические задачи, если действительно нужно решение проблемы, а не "игра ума". Во всяком случае, мне средства синхронизации, работающие точно по запрошенному алгоритмы, неизвестны.

#6:  Author: Own Little World PostPosted: Sun Nov 26, 2017 16:08
    —
CaptainFlint wrote:
Другой вопрос, что такой готовой программы я тоже не знаю.
Очень жаль. А так хотелось.

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

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

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

Avada, CaptainFlint спасибо за ответы.
Если подытожить все выше написанное, то программ, выполняющих "интеллектуальную синхронизацию" нет, и скорее всего не будет.
Ну и ладно, придется все делать по старинке.

#7:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Nov 26, 2017 16:19
    —
Own Little World wrote:
Операция чтения выполняется всяко быстрее, чем операция записи.

Ага. В общем и целом. Только вот печаль: записываются по итогам сравнения конкретные файлы, а читаться сначала должно ВСЁ. Даже в стандартном функционале TC построение файловых списков справа и слева и их последующее сравнение (особливо по содержимому) — штука не очень быстрая, когда файлов много и/или они большие. А в режиме "сравниваем всё со всем" — и подавно. Вам бы сильно понравился вариант инструмента синхронизации, когда на КАЖДЫЙ файл слева последовательно ищутся в процессе построения списка ВСЕ дубликаты справа, невзирая на их местоположение?

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

Own Little World
Я на вашем месте создавал бы дерево с симлинками/хардлинками (см. NTLinksMaker), а потом в общей папке делал бы поиск дубликатов с последующим удалением лишнего.

#9:  Author: Zmy PostPosted: Sun Nov 26, 2017 22:18
    —
Own Little World, я написал программу, которая подходит под вашу задачу.

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

Хотите попробовать?

#10:  Author: Own Little World PostPosted: Sun Nov 26, 2017 23:10
    —
Zmy wrote:

Хотите попробовать?
Конечно!

#11:  Author: Zmy PostPosted: Sun Nov 26, 2017 23:25
    —
Скачиваете SynDir.exe.
Описание её работы находится в файле Description.htm.

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

Я её практически не тестировал.
Вы, я думаю, понимаете, что на важных файлах опасно производить подобные манипуляции.
Хорошо её потестируйте на неважных файлах.

#12:  Author: FlasherLocation: Москва PostPosted: Mon Nov 27, 2017 00:03
    —
Zmy
В мануале слишком много ошибок разного калибра. Стоило бы это всё в божеский вид приводить перед выкладкой.

Quote:
Понимаете смысл?
Огромный каталог, с файлами по несколько гигабайт, будут сначала удаляться, а потом они же будут копироваться из источника,
когда можно только поменять ихний адрес в главной файловой таблице (MFT), при этом ничего не удаляя. Жёсткий диск будет вам за это бесконенчно благодарен.
Не, не понимаю...

#13:  Author: Zmy PostPosted: Mon Nov 27, 2017 00:04
    —
 !  CaptainFlint:
Строгое замечание за нарушение пп. 3, 9 правил. Исходное сообщение удалено.


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

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


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

 !  CaptainFlint:
Дубль дописанного сообщения удалён за бессмысленностью оного. Форум — это не чат, вам никто не обязан круглосуточно мониторить и мгновенно отвечать на сообщения.

#14:  Author: Zmy PostPosted: Mon Nov 27, 2017 20:46
    —
Own Little World, перекачайте.

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

Текущая версия 3.0.2.0.

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

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

Тем не менее, Zmy, спасибо за программу. Пусть и с огрехами, но она позволила наконец-то навести порядок в моих папках, а потом с легкостью синхронизировать их за небольшое время.

#16:  Author: oleglt PostPosted: Mon Mar 25, 2019 00:39
    —
zmy и мне понадобилось Ваше творение. Вот только как оно работает не понятно. Запускаю syndir, и появляется окно с ошибками параметров. Программа как таковая не запускается и негде и нечего вводить.
Может это как модуль ТС сделано, и она работает только из под коммандера?


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

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

Текущая версия 3.0.2.0.

#17:  Author: Zmy PostPosted: Wed Mar 27, 2019 08:11
    —
Эта утилита, которая принимает параметры командной строки.
Вы должны ей правильно передасть параметры.

В Description.chm есть примеры.

#18:  Author: oleglt PostPosted: Wed Mar 27, 2019 22:56
    —
спасибо за ответ.
Конечно, я пытался понять содержание description. но все равное не понял как использовать эту утилиту... Может не трудно сделать короткое видео? ну или чуть более подробно описать что и как надо делать.

Значение параметров я понял, не понял как вообще запустить и использовать ее.

#19:  Author: Zmy PostPosted: Thu Mar 28, 2019 08:05
    —
А там ничего сложного нет. Всего два варианта работы с программой.
Работа с диалогами, в которых надо выбирать каталоги для обработки,
и передача полных путей каталогов для обработки.

Вам надо создать пользовательскую кнопку или команду.
Правый клик по панели инструментов, редактировать. Сохраняете кнопку.


 Скриншот

.

#20:  Author: oleglt PostPosted: Thu Mar 28, 2019 10:31
    —
ага, т.е. это таки утилита для total commander. честно говоря его не использую, попробую )

#21:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Mar 28, 2019 11:55
    —
oleglt
Это отдельная утилита, которую предлагается вызывать вышеуказанным образом с помощью TC (здесь в любом случае форум по этой программе). А ещё попробуйте почитать правила форума насчёт употребления заглавных букв в сообщениях. Не выборочно, а везде, глде следует.

#22: копирование атрибутов Author: lurefumese PostPosted: Mon Sep 30, 2019 21:55
    —
Zmy wrote:


DateMask.exe помню эта программа копировала даты файла из одного файла другому, а может она перенести раннюю дату файла, что из столбца "Дата" в window7 в "дату создания" этого же файла ибо они у меня разные, кстати этот столбец "Дата" имеет самую раннюю дату создания файла верно? или что это за дата, как не читал гугл так и не понял чем отличается столбец "дата создания" от просто "даты".

#23:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Oct 01, 2019 07:20
    —
lurefumese
К ПО для синхронизации каталогов с разной структурой (см. основной заголовок темы) ваш вопрос не относится никак. Утилита DateMask.exe (пусть и того же автора) предлагалась в совершенно другой теме.
Указывать якобы цитату без самой цитаты не следовало. Ники участников форума вставляются в сообщения иначе (простым щелчком).
Под просто датой (той, которая в стандартных колонках TC) всегда понимается дата модификации, а не создания.
Что плохого в том, что даты создания и модификации у какого-то файла разные, я не понимаю, но это уже ваше дело.
"Переносами из столбцов" (использованием одной даты для другой в том же файле) DateMask.exe в представленном виде не занимается, ибо решает другие задачи.
А делается это на самом деле элементарно: в стандартном диалоге TC для изменения атрибутов в нижней секции для плагинов с помощью встроенного плагина tc (выбрать дату модификации, а информацию взять из даты создания в том же плагине; или наоборот). Читайте документацию TC и пробуйте.
Замечание за нарушение правил форума.

#24: Синхронизация каталогов с разной структурой Author: lurefumese PostPosted: Tue Oct 01, 2019 16:12
    —
Avada wrote:
lurefumese
К ПО для синхронизации каталогов с разной структурой (см. основной заголовок темы) ваш вопрос не относится никак. Утилита DateMask.exe (пусть и того же автора) предлагалась в (ссылка).
Указывать якобы цитату без самой цитаты не следовало. Ники участников форума вставляются в сообщения иначе (простым щелчком).
.


извините за нарушения, просто товарищ Zmy куда то пропал, в личке не отвечает, это самая последняя тема где он появлялся, поэтому сюда и написал, в его профиле нет информации когда он последний раз заходил на форум, возможно пару лет не заходил, в принципе я
сюда писал без всякой надежды на его ответ)

Avada wrote:
lurefumeseПод просто датой (той, которая в стандартных колонках TC) всегда понимается дата модификации, а не создания.
Что плохого в том, что даты создания и модификации у какого-то файла разные, я не понимаю, но это уже ваше дело.


В моих файлах дата модификации боле ранняя чем остальные, поэтому смею предполагать что справедливо её перенести в дату создания этого же файла, или я не прав?

Avada wrote:
lurefumese"Переносами из столбцов" (использованием одной даты для другой в том же файле) DateMask.exe в представленном виде не занимается, ибо решает другие задачи.
А делается это на самом деле элементарно: в стандартном диалоге TC для ссылка в нижней секции для плагинов с помощью встроенного плагина tc (выбрать дату модификации, а информацию взять из даты создания в том же плагине; или наоборот). Читайте документацию TC и пробуйте.
Замечание за нарушение ссылка


Спасибо, попробую.



Total Commander -> Программное обеспечение


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group