Search
Write a publication
Pull to refresh

Умный синхронизатор файлов существует??

Я имею в виду программы такие как Allway Sync, VuBrief, ZSKSoft Synchronizer, Microsoft SyncToy, Easy2Sync for Files… в принципе список уже набрался, так что эти программы можно уже отнести к отдельному типу: «Синхронизаторы файлов». Читал много аннотаций к программам, но ни где не нашёл того, что мне нужно, может быть это где-то просто не освещено. Меня интересует такая возможность, как дублирование перемещения, переименования папок и файлов. Как мне известно (из аннотаций) что в основном программы-синхронизаторы умеют копировать, удалять, чего в некоторых случаях очень даже не достаточно.
Конечно есть специальные проги, которые загружают службы и следят за нужными папками, и повторяют все изменения в нужных папках и файлах. Но, по моему, можно было бы обойтись без таких служб, используя алгоритм синхронизации который опишу ниже. Может быть я изобретаю велосипед, тогда подскажите мне пожалуйста программы, которые имеют следующие функции, и не загружают дополнительных служб.

Пользуюсь Allway Sync очень удобная программа, интерфейс отличный, простой понятный. Я использую только одностороннюю синхронизацию некоторых папок в аналогичные папки на флешке, поскольку двусторонняя синхронизация — нечто сложное, не дающее полной гарантии, что не создастся путаница, хотя любой синхронизатор поддерживает такую функцию. И, так же, речь пойдёт только о двух папках синхронизации (хотя многие сихнхронизаторы поддерживают по несколько папок как с одной, так и с другой стороны). Какие основные процедуры делает Allway Sync при синхронизации: сравнение, копирование, удаление (или перемещение в указанную папку вместо удаления) — всё. Для более быстрой и эффективной синхронизации, я бы добавил ещё две процедуры — поиск нужного файла или папки с совпадающими параметрами в процессе синхронизации, перемещение, или переименование при определённых условиях.

Алгоритм следующий:
Синхронизируются две папки — односторонняя синхронизация, назовём их «источник» и «приёмник».
Если в исходном одноименном каталоге «приёмника» не найден файл/папка, не нужно его/её копировать из «источника» как делают большинство программ, а сначала поискать во всех разделах «приёмника», и если уж не нашёлся/нашлась, то копировать. А данный (идентичный) файла/папка будет найден в другом разделе приёмника, причём в единственном экземпляре, тогда не стоит копировать такой же файл/папку из «источника», а переместить найденный в «приёмнике» файл/папку в исходный каталог, что займёт значительно меньше времени и ресурсов особенно если искомый файл/папка имеет большой размер, например 700 мб или 1Гб, чем копировать его с папки-«источника». Слова «каталог» и «папка» в данном случае синонимы.

Для чего это нужно: Во мнгих случаях для более удобного упорядочивания каталогов файлов, например с дистрибутивами софта, или с мультимедиа нужно переместить каталог большого размера, в другой каталог более обобщающего значения. Процедура «перемещения» занимает всегда мало времени, одинаково для маленьких фалов и папок, так и для больших, время зависит только от количества вложенных каталогов перемещаемой папки. Что делает синхронизатор файлов при таких изменениях он удаляет исходный каталог (который мы переместили) и заново копирует его в новое место. Т.е. вместо перемещения происходит удаление и копирование, что занимет значительно большее время, особенно это заметно при многомегабайтных, гигабайтных размерах, и причём, увеличевает фрагментированность насителя на который происходит резервное копирование, чего в случае с перемещением не произошло бы.
То же самое можно сказать и про переименование. Т. е. умный синхронизатор файлов должен сравнивать содержимое папок (и может быть файлов, что не обязательно) с разными именами, и если содержимое совпадает, а имена разные, произвести переименования, вместо бытующего опять же удаления и повторного копирования.

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

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

Ещё одна функция, на которой я хотел бы заострить внимание — перемещение файлов и паок в указанную папку вместо удаления. Такая опция есть в Allway Sync. Если использовать например флешку (или какой-то другой диск) только как резервное хранилище и место для переноса файлов (например с дома на работу и наоборот), используя данную функцию, — фрагментация файлов на ней исключена. Создаём папку на флешке, например с названием «Для удаления» и в настройках задачи на синхронизацию все подлежащие удалению (в результате синхронизации) на флешке файлы и каталоги перемещать в указанную папку. Когда свободного места на флешке станет мало, нужно просто уалить всё содержимое папки «Для удаления». Конечно после удаления этого содержимого в файловой системе образуются пробелы и в последующем в эти пробелы будут записываться вновь копируемые файлы — в результате чего их фрагментация. Но чтобы этого избежать, нужно просто очистки папки «Для удаления» оптимизировать дисковое пространство. Такую функцию поддерживают некоторые дефрагментаторы фйлов, например Quicksys DiskDefrag, который вдобавок имеет портабельную версию. Оптимизация займёт меньшее время чем дефрагментация, поскольку ей не придётся «бороться» со множеством мелких фрагментов. Но это для людей, педантично следящих за состоянием своих съёмных носителей.

И ещё одна функция, которая бы ещё выше подняла титул «умный» синхронизатор — это возможность приостановки процесса синхронизации, причём приостановке происходящей в данный момент процедуры копирования, аналогично фунции докачки файлов, реализованной во всех менеджерах закачек. В Total Commander например можно поставить на паузу копирование файла/папки, или в программе TeraCopy (имеющей официальную портабельную версию), предназначенной заменить стандартные средства копирования, перемещения и прочее файлов проводника Windows, тоже есть возможность приостановки копирования, и мн. др.

Ещё одна возможность, до не давнего времени экзотическая для Windows NTFS. — использование символических ссылок. Это актуально, если нужно экономить пространство, и не исключено наличие копий одного и того же файла или даже каталога в синхронизируемой папке, а также при наличии файловой системы NTFS 5 и выше, для Windows, в Linux, как известно, символические ссылки поддерживаются изначально. Например, вместо того, чтобы копировать новыефайлы, папки, которые уже имеются (их дубликаты) в папке-«приёмнике», создавать символические ссылки, на уже имеющиеся копии внутри синхронизируемого каталога-«приёмника». В Windows Vista поддерживаются символические ссылки (Symbolic link), в XP есть альтернатива символическим ссылкам — Hard link (жёсткие ссылки), которые можно создавать только на файлы, и junktion point (Точки связки) — которые можно создавать только на папки.

Для тех кто интересуется что такое символические ссылки статьи в ru.wikipedia.org: «Жёсткая ссылка», «Символьная ссылка», а также статьи Секреты NTFS. Жесткие ссылки — Компьютерра-Онлайн, Секреты NTFS. Символьные ссылки — Компьютерра-Онлайн, Непредсказуемые символические (символьные) ссылки в Windows.

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

И ещё. Хочу присоединиться к прекрасному порталу habrhabr. При регистрации я узнал, что нужно приглашение, или регистрацию можно заработать. Если кому-то статься показалась полезной, интересной, пожалуйста, добавьте мне инвайт.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.