СПОСОБ УПРАВЛЕНИЯ СИНХРОНИЗАЦИЕЙ ФАЙЛОВ (ВАРИАНТЫ), ЭЛЕКТРОННОЕ УСТРОЙСТВО (ВАРИАНТЫ) И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ
MANAGEMENT METHOD OF SYNCHRONIZATION OF FILES (OPTIONS), ELECTRONIC DEVICE (OPTIONS) AND COMPUTER-READABLE MEDIUM

Настоящая технология относится к способам и системам синхронизации файлов между файловыми системами.
Уровень техники
Все чаще и популярней для современных настольных компьютеров и мобильных устройств становятся механизмы синхронизации между файловыми системами сетевых устройств. Эти технологии предусматривают удобный механизм, позволяющий пользователям осуществлять резервное копирование и/или удаленно управлять своими данными через сеть передачи данных, например Интернет.
В соответствии с обычными технологиями (см. Фиг. 1) первая файловая система и вторая файловая система находятся под мониторингом. Периодически, для каждой файловой системы создается соответствующий индекс (например, с использованием графических представлений, например клиентского индекса 110 и серверного индекса 120), и далее он сравнивается с индексом синхронизации (например, стабильный индекс 130), который представляет собой ожидаемое состояние каждой из первой и второй файловых систем. Любые различия между наблюдаемым состоянием и ожидаемым состоянием каждой файловой системы затем идентифицируются для определения набора операций, необходимых для синхронизации двух файловых систем (например, при передаче файлов, удалении и т.д. - представлено на Фиг. 1 цифрами 112 и 122). Затем операции выполняются последовательно или параллельно, и при завершении каждой операции индекс синхронизации обновляется, чтобы вести учет текущего состояния синхронизации.
Например, известные системы и способы общего доступа и синхронизации файлов между одной или несколькими компьютерными системами описаны в Международной публикации № WO 2013/162387 А1 "Общий доступ и синхронизации файлов" (далее именуемой "Публикация Безена").
Раскрытие изобретения
В то время как обычные способы синхронизации файловых систем могут быть эффективными в синхронизации файлов между файловыми системами, изобретатель настоящей технологии обращает внимание на наличие некоторых неудобств и недостатков. Примечательно, что процесс определения операций, необходимых для синхронизации файлов между файловыми системами в ответ на изменения в одной файловой системе, может требовать существенных вычислительных ресурсов и/или много времени на обработку, особенно если число файлов, которое необходимо синхронизировать, растет. Поэтому изобретатель предлагает улучшенные способы и системы для управления синхронизацией файлов между файловыми системами.
Вкратце, объекты настоящей технологии предусматривают способы (и связанные устройства) управления синхронизацией файлов между файловыми системами с помощью универсального индекса, который включает в себя информацию о состоянии, относящуюся ко множеству файловых систем. При создании и ведении единого индекса изобретатель настоящей технологии установил, что можно добиться заметных улучшений обычной технологии, которая требует ведения и сравнения отдельных индексов, относящихся к каждой файловой системе.
Соответственно, одним объектом различных вариантов осуществления настоящей технологии является способ управления синхронизацией файлов между первой файловой системой первого электронного устройства и второй файловой системой второго электронного устройства, причем первое электронное устройство соединено со вторым электронным устройством через сеть передачи данных; способ включает в себя:
- идентификацию файлов, которые будут синхронизированы между первой файловой системой и второй файловой системой; и
- создание индекса, который включает в себя - по отношению к каждому из файлов - признак каждого из: первого состояния, связанного с первой файловой системой, второго состояния, связанного со второй файловой системой, и третьего состояния, представляющего собой синхронизированное состояние.
В некоторых вариантах осуществления технологии, способ дополнительно включает в себя добавление в индекс связи каждого из файлов по меньшей мере с одним каталогом из единой структуры каталогов, причем единая структура каталогов указывает одновременно на первую структуру каталогов, с которой связаны файлы в первой файловой системе, и на вторую структуру каталогов, с которой связаны файлы во второй файловой системе. В некоторых, не необязательно во всех подобных вариантах осуществления технологии, единая структура каталогов представляет собой древовидную структуру, и связь каждого из файлов по меньшей мере с одним каталогом из единой структуры каталогов представляет собой связь каждого из файлов с единственным соответствующим каталогом единой структуры каталогов. Структура каталогов, которая представляет собой древовидную структуру, содержит один корневой каталог (каталог, который не обладает подкаталогами или какими-либо другими каталогами) и также может содержать другие каталоги, причем каждый каталог, отличный от корневого каталога, является подкаталогом по отношению только к одному другому каталогу (то есть, корневому каталогу или другим каталогами). В других вариантах осуществления технологии может существовать более одного корневого каталога, и/или один или несколько каталогов могут представлять собой подкаталоги более чем одного другого каталога, и/или один или несколько файлов могут быть связаны более чем с одним каталогом. Пример такой не-древообразной структуры каталогов описан в публикации Безена со ссылкой на "облачную файловую систему" (публикация Безена, стр. 20, строки 5-9 и Фиг. 4д), с тем замечанием, что термины "папка" и "подпапка" взаимозаменяемы с терминами "каталог" и "подкаталог", что очевидно для специалистов в данной области техники.
Файлы, которые будут синхронизированы между файловыми системами, могут быть идентифицированы с помощью просмотра одного из следующего: первой структуры каталогов или второй структуры каталогов. Таким образом, в некоторых вариантах осуществления технологии идентификация файлов, которые будут синхронизированы, включает в себя получение признака каталога синхронизации, который представляет собой каталог одной из следующих структур: первой структуры каталогов и второй структуры каталогов, и идентификацию файлов, каждый из которых связан по меньшей мере с одним каталогом синхронизации и по меньшей мере одним подкаталогом каталога синхронизации.
Единая структура каталогов может создаваться на основе каталога, относящегося к одному из следующего: первой файловой системе и второй файловой системе. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя создание единой структуры каталогов с помощью тиражирования по меньшей мере части структуры каталогов с корнем в каталоге синхронизации.
В некоторых вариантах осуществления технологии один или несколько файлов могут быть добавлены к набору файлов, которые будут синхронизированы. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя:
- получение признака по меньшей мере одного дополнительного файла, который будет синхронизирован; и
- обновление индекса, чтобы он включал в себя - по отношению по меньшей мере к одному дополнительному файлу - признак каждого из: состояния, связанного с первой файловой системой, состояния, связанного со второй файловой системой, и синхронизированного состояния.
Варианты осуществления технологии, в которых файлы связаны с единой структурой каталогов, которая указывает на первую структуру каталогов, с которой файлы связаны в первой файловой системе, и на вторую структуру каталогов, с которой файлы связаны во второй файловой системе, дополнительный(е) файл(ы) может(гут) стать частью тех файлов, которые будут синхронизированы между файловыми системами, в результате того, что они становятся связанными по меньшей мере с одним каталогом из следующего: каталогом, относящимся к первой структуре каталогов, и каталогом, относящимся ко второй структуре каталогов. Таким образом, в некоторых вариантах осуществления технологии получение признака по меньшей мере одного дополнительного файла включает в себя получение признака того, что по меньшей мере один дополнительный файл становится связанным по меньшей мере с одним каталогом из следующего: каталогом, относящимся к первой структуре каталогов, и каталогом, относящимся ко второй структуре каталогов. Например, подобный признак может быть получен от первого электронного устройства, второго электронного устройства или откуда-либо еще.
Когда изменяется состояние одного или нескольких файлов в одной из файловых систем (например, из-за того, что файл был удален, изменен или перемещен), может быть необходимо обновить индекс, и одной из других файловых систем может быть необходимо выполнить операцию записи для ведения синхронизации файлов между файловыми системами. Эта ситуация может возникнуть в том случае, если один или несколько файлов были, например, удалены из первой файловой системы. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя:
- обнаружение удаления по меньшей мере одного из файлов из первой файловой системы;
- обновление индекса, чтобы указать на удаление соответствующего по меньшей мере одного из файлов;
- выполнение анализа обновленного индекса, соответствующего по меньшей мере одному из файлов; и
- на основе анализа, инициирование удаления вторым электронным устройством по меньшей мере одного из файлов из второй файловой системы.
В различных вариантах осуществления технологии один или несколько файлов, синхронизированных между первым электронным устройством и вторым электронным устройством, также могут быть синхронизированы между первым электронным устройством и третьим электронным устройством, находящимся в соединении с первым электронным устройством, причем третье электронное устройством может по этой причине инициировать удаление или изменение одного или нескольких файлов, которые будут синхронизированы в первой файловой системе. Таким образом, в некоторых вариантах осуществления технологии удаление по меньшей мере одного из файлов первой файловой системы представляет собой удаление, инициированное третьим электронным устройством, находящимся в связи с первым электронным устройством.
Индекс также может быть необходимо обновить, если один или несколько файлов были изменены в первой файловой системе. Таким образом, в некоторых вариантах осуществления технологии способ дополнительно включает в себя:
- обнаружение измененного состояния, связанного с первой файловой системой, соответствующей по меньшей мере одному из файлов;
- обновление индекса, чтобы указать на измененное состояние вместо первого состояния, соответствующего по меньшей мере одному из файлов;
- выполнение анализа обновленного индекса, соответствующего по меньшей мере одному из файлов; и
- на основе анализа, инициирование передачи по меньшей мере одного из по меньшей мере одной из файлов с первого электронного устройства на второе электронное устройство и запись вторым электронным устройством переданного второй файловой системе по меньшей мере одного из по меньшей мере одного из файлов.
В некоторых вариантах осуществления технологии обнаружение измененного состояния, связанного с первой файловой системой, по отношению по меньшей мере к одному из файлов, происходит как следствие изменения по меньшей мере одного из файлов в первой файловой системе, инициированного третьим электронным устройством, связанным с первым электронным устройством. В некоторых вариантах осуществления технологии выполнение анализа обновленного индекса включает в себя сравнение измененного состояния по меньшей мере с одним из второго или третьего состояния. Сравнение может позволить определить, какие именно операции необходимо выполнить для ведения синхронизации файлов между файловыми системами.
В некоторых случаях соответствующее состояние, связанное с каждой файловой системой, может быть одинаковым (например, в тех вариантах осуществления технологии, где один или несколько файлов синхронизированы между файловыми системами). В таких случаях нет необходимости поддерживать отдельные признаки первого состояния, второго состояния и третьего состояния. Напротив, все три состояния могут быть представлены одним элементом (например, одной величиной или объектом). Например, в зависимости от дизайна, отсутствие явной информации о первом состоянии и/или втором состоянии может означать, что это состояние идентично третьему состоянию, и в данном случае необходимо будет явно характеризовать только третье состояние. Таким образом, в некоторых вариантах осуществления технологии и при определенных условиях каждое из состояний: первое, второе и третье являются одним и тем же состоянием по отношению по меньшей мере к одному из файлов, и признак каждого из этих состояний является одним признаком одного и того же состояния. Аналогичная логика применима в том случае, когда первое состояние и второе состояние являются такими же, как и третье состояние. Таким образом, в некоторых вариантах осуществления технологии одно из состояний: первое или второе совпадают с третьим состоянием по отношению по меньшей мере к одному из файлов, и признак каждого из: третьего состояния и одного из: первого или второго состояния - является одним признаком одного и того же состояния.
Способ может выполняться любым электронным устройством, выполненным с возможностью осуществления этого способа. В некоторых вариантах осуществления технологии способ выполняется первым электронным устройством, причем индекс создается на постоянном машиночитаемом носителе, относящемся к первому электронному устройству. В других вариантах осуществления технологии способ выполняется вторым электронным устройством, причем индекс создается на постоянном машиночитаемом носителе, относящемся ко второму электронному устройству. В других вариантах осуществления технологии способ выполняется другим электронным устройством, отличным от первого электронного устройства или второго электронного устройства.
Другим объектом различных вариантов осуществления настоящей технологии является выполняемый на компьютере способ управления синхронизацией файлов между файловой системой клиентского устройства и файловой системой сервера, причем клиентское устройство связано с сервером через сеть передачи данных, способ включает в себя осуществление клиентским устройством:
- идентификации файлов, которые будут синхронизированы между файловой системой клиента и файловой системой сервера; и
- создания индекса, который включает в себя, по отношению к каждому из файлов:
- признак каждого состояния клиента, связанного с файловой системой клиента, состояния сервера, связанного с файловой системой сервера, и синхронизированного состояния; и
- установление связи по меньшей мере с одним каталогом из единой структуры каталогов, причем единая структура каталогов указывает одновременно на клиентскую структуру каталогов, с которой связаны файлы в файловой системе клиента, и на серверную структуру каталогов, с которой связаны файлы в файловой системе сервера.
В некоторых вариантах осуществления технологии способ дополнительно включает в себя осуществление на клиентском устройстве:
- обнаружения изменения по меньшей мере одного из файлов, связанных с файловой системой клиента;
- обновления индекса, чтобы указать на измененное состояние вместо клиентского состояния по отношению по меньшей мере к одному из файлов;
- анализа обновленного индекса, соответствующего по меньшей мере одному из файлов; и
- на основе анализа, передачи по меньшей мере одного из по меньшей мере одного из файлов серверу и инициирования записи сервером переданного файловой системе сервера по меньшей мере одного из по меньшей мере одного из файлов.
В некоторых вариантах осуществления технологии способ дополнительно включает в себя осуществление клиентским устройством:
- получения от сервера признака измененного состояния по меньшей мере одного из файлов, связанных с файловой системой сервера;
- обновления индекса, чтобы указать на измененное состояние вместо состояния сервера по отношению по меньшей мере к одному из файлов;
- анализа обновленного индекса, соответствующего по меньшей мере одному из файлов; и
- на основе анализа, инициирования передачи по меньшей мере одного из по меньшей мере одного из файлов от сервера клиентскому устройству и записи переданного файловой системе клиента по меньшей мере одного из по меньшей мере одного из файлов.
Другим объектом различных вариантов осуществления настоящей технологии является электронное устройство для выполнения одного или нескольких вышеописанных способов. Таким образом, различные варианты осуществления технологии предусматривают электронное устройство для управления синхронизацией файлов между первой файловой системойи второй файловой системой, причем электронное устройство включает в себя:
- постоянный машиночитаемый носитель, обладающий закодированной на нем файловой системой;
- интерфейс связи, настроенный и выполненный с возможностью установления соединения через сеть передачи данных со вторым электронным устройством, включающим в себя вторую файловую систему; и
- по меньшей мере один процессор, функционально соединенный с интерфейсом связи, первым постоянным машиночитаемым носителем и вторым постоянным машиночитаемым носителем, процессор настроен и выполнен с возможностью:
- идентифицировать файлы, которые будут синхронизированы между первой файловой системой и второй файловой системой; и
- создать индекс, который включает в себя - по отношению к каждому из файлов - признак каждого из: первого состояния, связанного с первой файловой системой, второго состояния, связанного со второй файловой системой, и третьего состояния, представляющего собой синхронизированное состояние.
Различные варианты осуществления технологии предусматривают электронное устройство для управления синхронизацией файлов между первой файловой системой и второй файловой системой, причем электронное устройство включает в себя:
- постоянный машиночитаемый носитель;
- интерфейс связи, настроенный и выполненный с возможностью установления соединения через сеть передачи данных с каждым из следующего: первым электронным устройством, включающим в себя первую файловую систему, и вторым электронным устройством, включающим в себя вторую файловую систему; и
- по меньшей мере один процессор, функционально соединенный с интерфейсом связи и постоянным машиночитаемым носителем, процессор настроен и выполнен с возможностью:
- идентифицировать файлы, которые будут синхронизированы между первой файловой системой и второй файловой системой; и
- создать индекс, который включает в себя - по отношению к каждому из файлов - признак каждого из: первого состояния, связанного с первой файловой системой, второго состояния, связанного со второй файловой системой, и третьего состояния, представляющего собой синхронизированное состояние.
Другим объектом различных вариантов осуществления настоящей технологии является постоянный машиночитаемый носитель, содержащий закодированные программные инструкции, при выполнении которых процессором электронного устройства осуществляется один или несколько вышеописанных способов. Таким образом, различные варианты осуществления технологии могут предусматривать постоянный машиночитаемый носитель, обладающий закодированными программными инструкциями, при выполнении которых по меньшей мере одним процессором осуществляется:
- идентификация файлов, которые будут синхронизированы между первой файловой системой первого электронного устройства и второй файловой системой второго электронного устройства, причем второе электронное устройство соединено с первым электронным устройством через сеть передачи данных; и
- создание индекса, который включает в себя - по отношению к каждому из файлов - признак каждого из: первого состояния, связанного с первой файловой системой, второго состояния, связанного со второй файловой системой, и третьего состояния, представляющего собой синхронизированное состояние.
В контексте настоящего описания «сервер» подразумевает под собой одно или несколько цифровых электронных устройств, которые способны (но не обязаны) включать в себя один или несколько процессоров, работающих на соответствующем оборудовании, которые способны получать запросы (например, от клиентских устройств) по сети и выполнять эти запросы или инициировать выполнение этих запросов. В контексте настоящей технологии использование выражения «сервер» не означает, что каждая задача (например, полученные инструкции или запросы) или какая-либо конкретная задача будет получена, выполнена или инициирована к выполнению одним и тем же сервером (то есть одним и тем же программным обеспечением и/или аппаратным обеспечением); это означает, что любое количество элементов программного обеспечения или аппаратных устройств может быть вовлечено в прием/передачу, выполнение или инициирование выполнения любого запроса или последствия любого запроса, связанного с клиентским устройством, и все это программное и аппаратное обеспечение может быть одним сервером или несколькими серверами, оба варианта включены в термин «сервер».
В контексте настоящего описания «клиентское устройство» подразумевает под собой цифровое электронное устройство, которое способно (но не обязано) включать в себя один или несколько процессоров, которые работают с программным обеспечением, подходящим к решению соответствующей задачи. Таким образом, примерами клиентских устройств (среди прочего) могут служить персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.), смартфоны, планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует иметь в виду, что устройство, ведущее себя как клиентское устройство в настоящем контексте, может вести себя как сервер по отношению к другим клиентским устройствам. Использование выражения «клиентское устройство» не исключает возможности использования множества клиентских устройств для получения/отправки, выполнения или инициирования выполнения любой задачи или запроса, или же последствий любой задачи или запроса, или же этапов любого вышеописанного метода.
В контексте настоящего описания «информация» включает в себя любую информацию, которая может храниться в базе данных. Таким образом, информация включает в себя, среди прочего, аудиовизуальные произведения (изображения, видео, звукозаписи, презентации и т.д.), данные (данные о местоположении, цифровые данные и т.д.), текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, таблицы и т.д.
В контексте настоящего описания "признак" информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, признак файла может включать в себя сам файл (т.е. его содержимое), или же он может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.
В контексте настоящего описания термин "состояние" файла подразумевает под собой содержимое файла и/или метаданные, связанные с файлом, в зависимости от варианта осуществления технологии. Таким образом, в некоторых вариантах осуществления технологии первое состояние, связанное с первой файловой системой, относящейся к файлу, может отличаться от второго состояния, связанного со второй файловой системой, относящейся к файлу, в силу того факта, что содержимое файла, хранящегося в первой файловой системе, отличается от содержимого файла, хранящегося во второй файловой системе. В других вариантах осуществления технологии состояния файла, связанные с первой и второй файловыми системами, могут отличаться друг от друга, даже если содержимое файла одинаково, например, по причине того, что метаданные, связанные с файлом (не исчерпывающие примеры этого включают в себя имя файла, время создания, время изменения, номер версии и т.д.) в первой файловой системе, отличаются от вторых метаданных, связанных с файлом во второй файловой системе. Поэтому изменение метаданных, связанных с файлом в первой файловой системе, может считаться - в некоторых вариантах осуществления технологии - изменением состояния файла, относящегося к первой файловой системе, которое может привести к необходимости синхронизации метаданных, связанных с файлом во второй файловой системе.
В контексте настоящего описания "машиночитаемый носитель" подразумевает под собой носитель абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д.
В контексте настоящего описания слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной связи между этими существительными. Так, например, следует иметь в виду, что использование терминов "первый сервер" и "третий сервер " не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) серверов/между серверами, равно как и их использование (само по себе) не предполагает, что некий "второй сервер" обязательно должен существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание "первого" элемента и "второго" элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, "первый" сервер и "второй" сервер могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.
Каждый вариант осуществления настоящей технологии включает по меньшей мере одну из вышеупомянутых целей и/или объектов, но наличие всех не является обязательным. Следует иметь в виду, что некоторые объекты данной технологии, полученные в результате попыток достичь вышеупомянутой цели, могут не удовлетворять этой цели и/или могут удовлетворять другим целям, отдельно не указанным здесь.
Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящей технологии станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.
Краткое описание чертежей
Для лучшего понимания настоящей технологии, а также других ее аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:
На Фиг. 1 представлена диаграмма, демонстрирующая пример обычной технологии определения операций, которые необходимо выполнить для синхронизации файлов между файловой системой клиента и файловой системой сервера;
На Фиг. 2 представлена схема сетевой вычислительной среды, подходящей для использования вариантов осуществления настоящей технологии;
На Фиг. 3 представлена схема компьютерной системы, обладающей различными аппаратными компонентами, подходящими для реализации вариантов осуществления настоящей технологии;
На Фиг. 4 представлена блок-схема диаграммы, демонстрирующая систему для реализации настоящей технологии с помощью различных логических компонентов;
На Фиг. 5 представлена диаграмма, иллюстрирующая пример единого индекса в соответствии с вариантом осуществления настоящей технологии;
На Фиг. 6 представлена таблица различных потенциальных комбинаций, относящихся к информации о состоянии, связанной с файлом или каталогом, которые будут синхронизированы между первой и второй файловыми системами;
На Фиг. 7 представлена таблица, отображающая файл и операции индекса, которые необходимо выполнить в каждой из множества возможных ситуаций в соответствии с примерным вариантом осуществления настоящей технологии; и
На Фиг. 8-12 представлены блок-схемы, иллюстрирующие различные варианты осуществления настоящей технологии.
Осуществление изобретения
Следует иметь в виду, что все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящей технологии, а не для установления границ ее объема. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящей технологии и находятся в границах ее объема.
Кроме того, для помощи в понимании, следующее описание касается достаточно простых вариантов осуществления настоящей технологии. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящей технологии будут обладать гораздо большей сложностью.
Некоторые полезные примеры модификаций настоящей технологии также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящей технологии. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах объема настоящей технологии. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента настоящей технологии.
Более того, все заявленные здесь принципы, аспекты и варианты осуществления технологии, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ, вне зависимости от того, известны ли они на данный момент или будут разработаны в будущем. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящей технологии. Аналогично, любые блок-схемы, диаграммы переходного состояния, псевдокоды и т.п. представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором вне зависимости от того, показан явно подобный компьютер или процессор или нет.
Функции различных элементов, показанных на фигурах, включают в себя функциональные блоки, обозначенные как "процессоры", могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное. Программные модули или простые модули, представляющие собой программное обеспечение, которое может быть использовано здесь в комбинации с элементами блок-схемы или другими элементами, которые указывают на выполнение этапов процесса и/или текстовое описание. Подобные модели могут быть выполнены на аппаратном обеспечении, показанном напрямую или косвенно. Также следует отметить, что чертежи выполнены не в масштабе, если не специально указано иное.
Далее будут рассмотрены некоторые не ограничивающие иллюстративные варианты осуществления аспектов настоящей технологии.
На Фиг. 2 представлена схема, демонстрирующая пример реализации схемы 200, состоящей из смартфона 210 и персонального компьютера 220, каждый из которых соединен с сервером 230 через сеть 201 передачи данных (например, Интернет, локальную сеть или любую другую подходящую сеть передачи данных). В других вариантах осуществления технологии (не показаны) смартфон 210 и персональный компьютер 220 могут быть соединены с сервером 230 через отдельную сеть передачи данных вместо сети 201 передачи данных. Соответствующие сетевые технологии, которые могут быть использованы для реализации сети 201 передачи данных, включают в себя, среди прочего, коммутируемый удаленный доступ, выделенную линию, цифровую сеть с интеграцией служб, оптическую, широкополосную, электрическую, оптоволоконную сеть, цифровую абонентскую линию, Wi-Fi, кабельную, спутниковую и мобильную связь. Известные межсетевые протоколы (т.е. TCP/IP) могут быть использованы в сочетании с подобными технологиями наряду с протоколами более высокого уровня (т.е. HTTP) для осуществления связи между электронными устройствами, соединенными с сетью 201 передачи данных.
Смартфон 210 может представлять собой стандартный смартфон, например Apple iPhone™, работающий на операционной системе Apple iOS™, или Samsung Galaxy™ серии S, работающий на операционной системе Google Android™, а персональный компьютер 220 может представлять собой стандартный настольный компьютер, работающий на стандартной операционной системе, например Microsoft Windows™ или Apple OSX™. Сервер 230 может представлять собой один или несколько физических компьютеров и/или виртуальных машин, настроенных и выполненных с возможностью выполнять задачи, необходимые для выполнения функций, описанных ниже.
На Фиг. 3 представлен примерный вариант осуществления каждого элемента - смартфона 210, персонального компьютера 220 и сервера 230, которые могут представлять собой компьютерную систему 300, включающую в себя компоненты аппаратного обеспечения: один или несколько одиночных мультиядерных процессоров 310, память 210, запоминающее устройство 330 и сетевой интерфейс 340 (подходящие для установления связи через сеть 201 передачи данных, представленную на Фиг. 2). Связь между различными компонентами возможна с помощью одной или нескольких внутренних или внешних шин 350 (например, PCI или USB), к которым могут быть присоединены компоненты электронным образом. Вышеописанные аспекты настоящей технологии могут быть реализованы в компьютерной системе 300. Например, компьютерная система 300 может включать в себя или иметь доступ к постоянному машиночитаемому носителю (например, память 320), обладающему закодированными программными инструкциями, при выполнении которых по меньшей мере одним процессором (например, процессором 310) осуществляется один или несколько вышеописанных способов.
На Фиг. 4 представлен пример системы 400 синхронизации файлов, реализующей аспекты настоящей технологии. Представленная система позволяет синхронизировать файлы между файловой системой 410 клиента и файловой системой 430 сервера. Следует иметь в виду, что различные блочные элементы, представленные на Фиг.4, являются исключительно логическими компонентами, каждый из которых может быть физически реализован с применением любого подходящего аппаратного обеспечения (опционально включающего в себя один или несколько процессоров, работающих на подходящем программном обеспечении). Таким образом, каждая из следующего: файловая система 410 клиента и файловая система 430 сервера может представлять собой службу хранения файлов, реализующую интерфейс хранения файлов. Упомянутый интерфейс хранения файлов может включать в себя одну или несколько команд для получения списка файлов, хранящихся в файловой системе (включая информацию о состоянии файлов, например имя файла, даты и время создания и изменения, доступ к файлу, размер, тип, хэш целостности файла), и одну или несколько команд для выполнения одной или нескольких операций записи (включая операции удаления), относящиеся к одному или нескольким файлам. Не ограничивающий пример варианта осуществления технологии представлен на Фиг. 2 и 4, файловая система 410 клиента представляет собой службу хранения файлов смартфона 210, показанного на Фиг. 2 (например, использующую для хранения флэш-память), а файловая система 430 сервера представляет собой службу хранения файлов сервера 230 (например, использующую для хранения твердотельный накопитель).
Более того, любые другие логические компоненты, представленные на Фиг. 4, могут быть реализованы индивидуально или совместно при помощи электронного аппаратного обеспечения (опционально использующего один или несколько процессоров, работающих на соответствующем программном обеспечении), и каждый компонент может быть расположен совместно с одной или обеими из: файловой системы 410 клиента и файловой системы 430 сервера, или же он может быть расположен на отдельном аппаратном обеспечении, находящемся в связи с каждой из файловых систем, вне зависимости от того, как именно они связаны - напрямую или через сеть передачи данных. В одном не ограничивающем варианте осуществления технологии, каждый из элементов: монитор 420 клиента, монитор 440 сервера, единый индекс 450, генератор 460 файловых операций и исполнитель 470 файловых операций - реализован как программное обеспечение (т.е. программные инструкции), находящееся в памяти 320 смартфона 210 и используемое процессором 310 смартфона 210 (со ссылкой на Фиг.2). Если эти компоненты расположены совместно с файловой системой 410 клиента, связь между каждым и любым из этих компонентов с файловой системой 410 может осуществляться на локальном уровне, например, через ссылку в общей памяти, межпроцессорное взаимодействие и/или одну или несколько шин 350 смартфона 210. В свою очередь, связь между файловой системой 430 сервера и каждого из: монитора 440, исполнителя 470 файловых операций может быть реализована с помощью сети 201 передачи данных (показана на Фиг. 2), с которым может быть функционально связан соответствующий сетевой интерфейс 340 (показан на Фиг. 3) каждого из: смартфона 210 и сервера 230.
В широком смысле, не ограничивающий пример системы 400 синхронизации файлов, показанный на Фиг.4, работает следующим образом. Монитор 420 клиента периодически взаимодействует с файловой системой 410 клиента, используя команду для создания перечня файлов ее интерфейса хранения файлов (описано выше) для получения информации, соответствующей состоянию одного или нескольких файлов, хранящихся на файловой системе 410 клиента, которые будут синхронизированы с файловой системой 430 сервера. На основе информации, полученной таким образом, монитор 420 клиента обновляет единый индекс 450, связанный с одним или несколькими файлами, с помощью информации 422 о состоянии клиента. Аналогичным образом, монитор 440 сервера постоянно взаимодействует с файловой системой 430 сервера, используя команду для создания перечня файлов ее интерфейса хранения файлов для получения информации, соответствующей состоянию одного или нескольких файлов, относящихся к файловой системе 430 сервера, и обновляет единый индекс 450 с помощью информации 432 о состоянии клиента. Специалистам в данной области техники будет понятно, что в различных вариантах осуществления технологии информация может быть получена монитором 420 клиента от файловой системы 410 клиенты (и, аналогичным образом, монитор 440 сервера от файловой системы 430 сервера) множеством различных способов, например с помощью периодической проверки соответствующей файловой системы, как описано выше, или с помощью установки на файловую систему компонента мониторинга (не показан) для получения от него уведомлений о наблюдении релевантных изменениях в файлах и/или каталогах.
Как показано на Фиг. 4, обновления единого индекса 450 инициируют работу генератора 460 операций, который оценивает обновленную информацию в едином индексе 450, относящуюся к каждому из файлов, и определяет соответствующие операции 462, которые будут инициированы исполнителем 470 операций для осуществления синхронизации файлов. Далее подробно будет описан примерный вариант осуществления генератора 460 файловых операций. Исполнитель 470 файловых операций интерпретирует файловые операции 462 и взаимодействует с файловой системой 410 через одну или несколько команд своего интерфейса сохранения для инициирования выполнения одной или нескольких операций 474 файловой системы клиента. Исполнитель 470 файловых операций также обновляет единый индекс 450 с помощью синхронизированной информации 472 о состоянии, опционально после ожидания и получения обратной связи от файловой системы 410 клиента касательно успешности или неудачи операций 474 файловой системы клиента. Аналогичным образом, исполнитель 470 файловых операций взаимодействует с файловой системой 430 через одну или несколько команд своего интерфейса сохранения для инициирования выполнения одной или нескольких операций 476 файловой системы клиента. Исполнитель 470 файловых операций снова обновляет единый индекс 450 с помощью синхронизированной информации 472 о состоянии, опционально после ожидания и получения обратной связи от файловой системы 430 клиента касательно успешности или неудачи операций 476 файловой системы сервера. Таким образом, единый индекс 450 используется для представления каждого из: состояния, связанного с файловой системой 410 клиента, состояния, связанного с файловой системой 430 сервера, и синхронизированного состояния каждого из файлов, которые будут синхронизированы.
Простой пример такого единого индекса 450 представлен на Фиг.5. Четыре файла (104-1, 104-2, 104-3 и 104-4) включены в единый индекс 450. Каждый из файлов связан с одним каталогом в единой структуре 106 каталогов: файл 104-1 связан с каталогом "А" (102-1), файлы 104-2 и 104-3 связаны с каталогом "В" (102-2), файл 104-4 связан с каталогом "С" (102-3). Единая структура 106 каталогов представляет собой древовидную структуру с корневым каталогом "А" (102-1), а каждый из каталогов "В" (102-2) и "С" (102-3) является непосредственным подкаталогом каталога "А" (102-1).
Единый индекс 450, показанный на Фиг.5, представляет информацию о состоянии, эквивалентную той, что показана на Фиг.1, при использовании обычного трехиндексного подхода. Каждый из файлов 140 и каталогов 102 единого индекса 450 обладает информацией о состоянии, связанной с ними, которая символически представлена тремя квадратными окнами, показанными в связи с каждым из файлов 104 и каталогов 102, первое окно отражает синхронизированное состояние, второе окно отражает состояние клиента, а третье окно отражает состояние сервера. Когда второе или третье окно не заполнены (например, второе окно каталога 102-3 или третье окно файла 104-1), то это означает, что файл или каталог на текущий момент не сохранены в файловой системе, соответствующей данному окну. Когда первое окно не заполнено (например, первое окно каталога 102-3), это означает, что информация о синхронизированном состоянии соответствующего файла или каталога отсутствует или, другими словами, после последней синхронизации отсутствует запись о файле или каталоге, хранящемся на файловой системе 410 клиента или файловой системе 430 сервера. Если второе или третье окно содержит черную или выколотую точку, то это означает, что соответствующее состояние файла или каталога сохранено в соответствующей файловой системе. Таким образом, если оба окна - второе и третье - содержат черную точку (например, каталог 102-1), то файловая система 410 клиента или файловая система 430 сервера хранят записи об одном и том же состоянии файла или каталога, если же одно из них содержит черную точку, а второе - выколотую точку (например, файл 104-2), то они хранят записи о различных состояниях файла или каталога. Наличие черной или выколотой точки в первом окне указывает на синхронизированное состояние файла или каталога при последней синхронизации.
Специалисты в данной области техники оценят тот факт, что единая структура 106 каталогов единого индекса 450, представленного на Фиг. 5, является признаком того, что обе структуры каталогов: в которой файлы находятся в файловой системе 410 клиента (представлено в клиентском индексе 110 на Фиг. 1) и в которой файлы находятся в файловой системе 430 сервера (представлено в серверном индексе 120 на Фиг. 1), на основании композитной структуры каталогов, включающей в себя каждый из каталогов (102-1, 102-2, 102-3), содержащихся в какой-либо из этих структур каталогов, вместе с информацией о состоянии, связанной с каждым из каталогов (102-1, 102-2, 102-3), причем информация о состоянии включает в себя пустое окно, если соответствующий каталог отсутствует в одной из структур каталогов. Например, как показано на Фиг. 5, второе окно каталога 102-3 является пустым, что указывает на то, что каталог 102-3 не представлен в структуре каталогов файловой системы 410 клиента. Важно иметь в виду, что все нижеследующее представляет собой только один из возможных способов указания на обе структуры каталогов: в которой находятся файлы, связанные с файловой системой 410 клиента, (представлено в клиентском индексе 110 на Фиг. 1), и в которой находятся файлы, связанные с файловой системой 430 сервера. Настоящая технология не ограничивается этим способом, он представлен только для иллюстрации.
С учетом этих основных пунктов можно предлагать возможные комбинации информации о состоянии и соответствующих операциях, которые необходимо выполнить для синхронизации файлов между файловыми системами с помощью единого индекса 450.
На Фиг. 6 в таблице 600 представлены различные комбинации информации о состоянии (т.е. "варианты" 1-27). Как упомянуто выше, каждое из состояний: синхронизированное, состояние клиента и состояние сервера, может быть представлено пустым окном или окном, содержащим точку. Таблица 600 предусматривает 27 возможных комбинаций информации о состоянии, для целей иллюстрации того, что некоторые из этих комбинаций функционально эквивалентны другим по отношению к определению подходящих операций, которые необходимо выполнить для того, чтобы осуществить синхронизацию файлов. Представленные варианты функционально пересекаются в плане их эквивалентности по отношению к другим вариантам, представленным на сером фоне в таблице 600, причем эквивалентные им варианты указаны в последней колонке. Например, вариант 2 эквивалентен варианту 1, поскольку они оба представляют состояния, в которых файл/каталог хранится в файловой системе 430 сервера, а не в файловой системе 410 клиента, и запись об этом файле/каталоге отсутствует при последней синхронизации. Вариант 5 эквивалентен варианту 7, поскольку они оба представляют состояния, в которых файловая система 410 клиента и файловая система 430 сервера хранят различные состояния файла/каталога, и запись об этом файле/каталоге отсутствует при последней синхронизации.
Вариант 27, показанный в последнем ряду таблицы 600, является уникальным, поскольку файловая система 410 клиента и файловая система 430 сервера хранят различные состояния файла/каталога, и информация о синхронизированном состоянии при последней синхронизации указывает на еще одно состояние файла/каталога. Таким образом, кроме черной и выколотой точек, используется третий тип точки (выколотая точка с чертой) для указания на третье ненулевое состояние файла/каталога.
Установив функциональную избыточность некоторых возможных комбинаций информации о состоянии, обратимся к Фиг. 7, на которой представлена таблица 700, предусматривающая 14 непересекающихся состояний (вариантов), которые напрямую или косвенно являются результатом создания, изменения или удаления файла или каталога по меньшей мере на одной из файловых систем - 410 клиента и 430 сервера. Также в таблице 700 показаны соответствующие операции (файловые действия или индексные действия), которые считаются подходящими для синхронизации файла или каталога в соответствии с вариантами осуществления настоящей технологии (например, с помощью генератора 460 файловых операций, представленного на Фиг. 4). Для каждого возможного значения информации о состоянии (т.е. "варианта") также представлено обновленное значение информации о состоянии, которое является результатом удачного завершения одного или нескольких файловых действий и индексных действий (т.е. "конечный вариант").
Первое и второе состояние, представленные в виде вариантов 1 и 2 на Фиг. 7, могут указывать на ситуацию, в которой новый файл (или каталог) был создан в одной из файловых систем. Для того чтобы синхронизировать файл между файловыми системами, требуется выполнение операции передачи (скачивания или загрузки). Успешное завершение этой операции может привести к тому, что информация о состоянии клиента будет обновлена, чтобы отражать наличие переданного файла в файловой системе получателя. В различных вариантах осуществления технологии информация о состоянии, связанная с получателем (т.е. состоянии клиента или состоянии сервера), может быть обновлена на основании предположения о том, что передача будет (или была) завершена успешно. В других вариантах осуществления технологии информация о состоянии может быть обновлена после установления того факта, что передача была завершена успешно. После того как операции были завершены, конечная информация о состоянии будет соответствовать той, что представлена в варианте 3 (на Фиг. 7).
Вариант 3 может указывать на то, что ситуация, в которой тот же файл был передан каждой из: файловой системе 410 клиента и файловой системе 430 сервера или, более вероятно, на то, что ситуация, в которой файл был передан от одной файловой системы другой. Операции синхронизации остается только обновить синхронизированное состояние в едином индексе 450 для того, чтобы состояния клиента и сервера совпадали, что приводит к информации о состоянии варианта 9, стабильном состоянии.
Варианты 4, 7, 11 и 14 предусматривают ситуации, в которых присутствует конфликт между состоянием клиента и состоянием сервера, а синхронизированное состояние отличается от них обоих, и поэтому не предоставляет указания на то, какое из состояний - клиента или сервера - является более новым, что могло бы помочь в разрешении этого конфликта. В варианте 4 (и в варианте 14, который сводится к варианту 4 после удаления информации о состоянии) существует два отличающихся состояния файла, и необходимо разрешить конфликт либо с помощью определенного (или произвольного) правила, например путем сохранения/передачи более нового (или более старого) состояния файла после оценки соответствующих отметок о времени, путем запроса к пользователю/вмешавшемуся оператору о выборе одного или другого состояния или, если возможно, путем объединения двух состояний файла с помощью включения по меньшей мере части каждого в третье состояние файла. Настоящая технология не ограничена какой-либо конкретной стратегией решения подобных конфликтов, могут применяться различные варианты осуществления одного или нескольких вышеописанных способов или другие способы разрешения конфликтов.
Так или иначе, вариант 4 приводит к варианту 3, поскольку в результате конфликта получается одно и то же состояние файла. В вариантах 7 и 11 файл отсутствует на одной из файловых систем, поскольку новое состояние файла присутствует в другой. Опять же, необходимо сделать выбор (либо заранее по заданной схеме, либо в каждом случае индивидуально, и при наличии или отсутствии человеческого фактора) между удалением нового состояния файла или передачей его другой файловой системе. Другими словами, полученный вариант будет представлять собой либо вариант 5, либо вариант 13, в зависимости от результата разрешения конфликта.
Следует отметить, что каждый из конфликтных вариантов 4, 7, 11 и 14 может возникнуть в том случае, если файл/каталог был отдельно изменен/удален в каждой из файловых систем - 410 клиента и 430 сервера - до того, как какое-либо из этих индивидуальных изменений было обнаружено системой синхронизации. Таким образом, вероятность возникновения этих вариантов может быть снижена при увеличении частоты, с которой информация о состоянии извлекается из файловых систем 410 и 430. Как вариант, чтобы избежать подобных вариантов совсем, может быть использован механизм блокировки файла, в котором только один из: файла, хранящегося в файловой системе 410 клиента, и файла, хранящегося в файловой системе 430 сервера, может быть изменен в данный момент.
Вариант 5 предусматривает ситуацию, в которой информация о синхронизированном состоянии присутствует для файла, который отсутствует в одной из файловых систем - 410 клиента или 430 сервера. Скорее всего, это является результатом того, что файл был удален на одной из файловых систем 410 и 430, а затем был удален из другой файловой системы в результате действия системы синхронизации файлов (т.е. вариант 6 или вариант 8).
Вариант 9 является отдельным случаем, в котором рассматриваемый файл/каталог, который в текущий момент синхронизирован между двумя файловыми системами 410 и 430, и синхронизированное состояние также адекватно отражает состояние файла, хранящегося на обоих файловых системах. В таком случае нет необходимости выполнять какие-либо операции, и конечный вариант снова будет представлять собой вариант 9, поскольку до изменения информации о состоянии возможные действия отсутствуют.
Варианты 10 и 12 представляют собой ситуации, в которых новое состояние файла/каталога возникает в файловой системе 430 сервера или файловой системе 410 клиента соответственно. Поскольку эти ситуации по существу эквивалентны возникновению абсолютно нового файла, то подходящий набор действий может быть инициирован при удалении информации о состоянии (т.е. синхронизированном состоянии и состоянии клиента в варианте 10 или синхронизированном состоянии и состоянии сервера в варианте 12) для достижения варианта 1 или 2 соответственно.
Вариант 13 предусматривает ситуацию, где одно и то же состояние файла/каталога сохранено в обеих файловых системах 410 и 430, но информация о состоянии указывает на другое (предположительно, более старое) состояние файла. Соответствующее действие представляет собой обновление синхронизированного состояния, приводящее к полностью синхронизированному состоянию варианта 9.
На Фиг. 8 представлена блок-схема, соответствующая первому примеру способа реализации настоящей технологии. Конкретнее, на Фиг. 8 представлен исполняемый на компьютере способ 800 управления синхронизацией файлов между первой файловой системой первого электронного устройства и второй файловой системой второго электронного устройства, причем первое электронное устройство соединено со вторым электронным устройством через сеть передачи данных. Способ 800 может быть осуществлен, например, сервером 230, находящимся в сетевой вычислительной среде, представленной на Фиг. 2, чтобы синхронизировать файлы между файловой системой 430 (первой файловой системой) сервера 230 (первого электронного устройства) и файловой системой 410 клиента (второй файловой системой), т.е. смартфона 210 (второго электронного устройства). Сервер 230 может представлять собой аппаратное обеспечение (и, опционально, программное обеспечение), которое реализует различные логические компоненты, описанные выше со ссылкой на Фиг.4, точнее - монитор 420 клиента, монитор 440 сервера, единый индекс 450, генератор 460 файловых операций и исполнитель 470 файловых операций.
Способ 800 включает в себя несколько этапов. На этапе 810 идентифицируются файлы, которые будут синхронизированы между первой файловой системой и второй файловой системой. Этап 810 включает в себя этапы 812 и 814. На этапе 812 осуществляется получение признака каталога синхронизации, структура которого является одной из: первой структурой каталогов, с которой связаны файлы в первой файловой системе (например, файловой системе 410 клиента), и второй структурой каталогов, с которой связаны файлы во второй файловой системе (например, файловой системе 430 сервера). На этапе 814 идентифицируется каждый файл, связанный по меньшей мере с одним каталогом синхронизации и по меньшей мере одним подкаталогом каталога синхронизации. Например, монитор 420 клиента может получать список, содержащий каждый файл, связанный по меньшей мере с одним из каталогом синхронизации и по меньшей мере одним подкаталогом (или его подкаталогом) каталога синхронизации. На этапе 820 создается единый индекс 450 файлов (например, в постоянном машиночитаемом носителе, например памяти 320 сервера 230), единый индекс 450 включает в себя, по отношению к каждому из файлов, указание на каждое из - первое состояние, связанное с первой файловой системой (файловой системой 430 сервера), и второе состояние, связанное со второй файловой системой (файловой системой 410 клиента), и третье состояние, представляющее собой синхронизированное состояние. В некоторых случаях каждое из состояний: первое, второе и третье являются одним и тем же состоянием по отношению по меньшей мере к одному из файлов, и признак каждого из этих состояний является одним признаком одного и того же состояния. На этапе 830 единая структура 106 каталогов, являющаяся древовидной структурой, создается путем тиражирования по меньшей мере части структуры каталогов с корнем в каталоге синхронизации, причем единая структура 106 каталогов указывает на обе структуры: первую структуру каталогов и вторую структуру каталогов. На этапе 840 в единый индекс 450 включается указание на каждый из файлов по отношению только к одному соответствующему каталогу из единой структуры 106 каталогов. На этапе 850 осуществляется получение указания на один или несколько дополнительных файлов, которые будут синхронизированы. Например, этап 850 может включать в себя этап 852, в котором осуществляется получение указания на то, что по меньшей мере один дополнительный файл стал связан по меньшей мере с одним каталогом, принадлежащим первой структуре каталогов (например, хранящимся в файловой системе 430 сервера), и одним каталогом, принадлежащим второй структуре каталогов (например, хранящимся в файловой системе 410 клиент). На этапе 860 осуществляется обновление единого индекса 450, чтобы он включал в себя - по отношению по меньшей мере к одному дополнительному файлу - признак каждого из: состояния, связанного с первой файловой системой (файловой системой 430 сервера), и состояния, связанного со второй файловой системой (файловой системой 410 клиента), и синхронизированного состояния.
На Фиг. 9 представлена блок-схема, соответствующая второму примеру способа реализации настоящей технологии. Конкретнее, на Фиг. 9 представлен исполняемый на компьютере способ 900 управления синхронизацией файлов между первой файловой системой первого электронного устройства и второй файловой системой второго электронного устройства, причем первое электронное устройство соединено со вторым электронным устройством через сеть передачи данных. Способ 900 может быть осуществлен, например, смартфоном 210, находящимся в сетевой вычислительной среде, представленной на Фиг.2, чтобы синхронизировать файлы между файловой системой 430 (первой файловой системой) сервера 230 (первого электронного устройства) и файловой системой 410 клиента (второй файловой системой), т.е. смартфона 210 (второго электронного устройства). Смартфон 210 может включать аппаратное обеспечение (и, опционально, программное обеспечение), которое реализует различные логические компоненты, описанные выше со ссылкой на Фиг.4, точнее - монитор 420 клиента, монитор 440 сервера, единый индекс 450, генератор 460 файловых операций и исполнитель 470 файловых операций.
Способ 900 включает в себя несколько этапов. На этапе 910 идентифицируются файлы, которые будут синхронизированы между первой файловой системой (файловой системой 430 сервера) и второй файловой системой (файловой системой 410 клиента). На этапе 920 создается единый индекс 450 файлов (например, в постоянном машиночитаемом носителе второго электронного устройства, например памяти 320 смартфона 210), единый индекс 450 включает в себя, по отношению к каждому из файлов, указание на каждое из - первое состояние, связанное с первой файловой системой (файловой системой 430 сервера), и второе состояние, связанное со второй файловой системой (файловой системой 410 клиента), и третье состояние, представляющее собой синхронизированное состояние. В некоторых случаях одно из состояний: первое или второе могут совпадать с третьим состоянием по отношению по меньшей мере к одному из файлов, и признак каждого из: третьего состояния и одного из: первого или второго состояния - может являться одним признаком одного и того же состояния. На этапе 930 обнаруживается удаление по меньшей мере одного из файлов из первой файловой системы (например, файловой системы 430 сервера), представляет собой удаление, инициированное третьим электронным устройством, находящимся в связи с первым электронным устройством. Например, на Фиг. 2 смартфон 210 и персональный компьютер 220 могут быть выполнены с возможностью синхронизировать один и тот же файл с сервером 230 через сеть 201 передачи данных, и персональный компьютер 220 (третье электронное устройство) может инициировать удаление файла сервером 230 (первое электронное устройство), что может повлечь за собой передачу сервером 230 уведомления об удалении файла смартфону 210 (второму электронному устройству). На этапе 940 единый индекс 450 обновляется в отношении по меньшей мере одного из файлов, которые были признаны удаленными (например, при удалении состоянии сервера, связанного по меньшей мере с одним из файлов из единого индекса 450). На этапе 950 выполняется анализ обновленного единого индекса 450, соответствующего по меньшей мере одному из файлов. Например, генератор 460 файловых операций смартфона 210 может выполнять анализ информации о состоянии, включающий в себя единый индекс 450, как описано выше со ссылкой на Фиг. 7. Наконец, на этапе 960 на основе анализа осуществляется инициирование удаления вторым электронным устройством по меньшей мере одного из по меньшей мере одного файла из второй файловой системы. Например, исполнитель 470 файловых операций смартфона 210 может инициировать удаление по меньшей мере одного из файлов из файловой системы 410 клиента.
На Фиг. 10 представлена блок-схема, соответствующая третьему примеру способа реализации настоящей технологии. Конкретнее, на Фиг. 10 представлен исполняемый на компьютере способ 1000 управления синхронизацией файлов между первой файловой системой первого электронного устройства и второй файловой системой второго электронного устройства, причем первое электронное устройство соединено со вторым электронным устройством через сеть передачи данных. Способ 1000 может быть осуществлен, например, сервером 220, находящимся в сетевой вычислительной среде, представленной на Фиг. 2, чтобы синхронизировать файлы между (первой) файловой системой персонального компьютера 220 (первого электронного устройства) и (второй) файловой системой, т.е. смартфона 210 (второго электронного устройства).
Способ 1000 включает в себя несколько этапов. На этапе 1010 идентифицируются файлы, которые будут синхронизированы между первой файловой системой и второй файловой системой. На этапе 1020 создается единый индекс 450 файлов, который включает в себя по отношению к каждому из файлов, указание на каждое из состояний: первое состояние, связанное с первой файловой системой, второе состояние, связанное со второй файловой системой, и третье состояние, представляющее собой синхронизированное состояние. На этапе 1030 происходит обнаружение измененного состояния, связанного с первой файловой системой, по отношению по меньшей мере к одному из файлов, как следствие изменения по меньшей мере одного из файлов в первой файловой системе, инициированного третьим электронным устройством, связанным с первым электронным устройством. На этапе 1040 единый индекс 450 обновляется в отношении по меньшей мере одного из файлов, чтобы указывать на измененное состояние вместо первого состояния. На этапе 1050 выполняется анализ обновленного единого индекса 450, соответствующего по меньшей мере одному из файлов. Например, генератор 460 файловых операций сервера 230 может выполнять анализ информации о состоянии, включающий в себя единый индекс 450, как описано выше со ссылкой на Фиг. 7. Этап 1050 может включать в себя этап 1052, в котором измененное состояние сравнивается по меньшей мере с одним из: вторым состоянием и третьем состоянием в отношении по меньшей мере одного из файлов. На этапе 1060 на основе анализа осуществляется передача по меньшей мере одного из по меньшей мере одного файла с первого электронного устройства второму электронному устройству и запись вторым электронным устройством по меньшей мере одного из по меньшей мере одного переданного файла второй файловой системе. Например, исполнитель 470 файловых операций сервера 230 может инициировать передачу измененного состояния по меньшей мере одного файла от персонального компьютера 220 смартфону 210 и запись его в файловой системе смартфона 210.
На Фиг. 11 представлена блок-схема, соответствующая четвертому примеру способа реализации настоящей технологии. Конкретнее, на Фиг. 11 представлен выполняемый на компьютере способ 1100 управления синхронизацией фалов между файловой системой 410 клиентского устройства (например, смартфона 210) и файловой системой 430 сервера (например, сервера 230), причем клиентское устройство соединено с сервером через сеть передачи данных.
Способ 1100 включает в себя несколько этапов. На этапе 1110 осуществляется идентификация файлов, которые будут синхронизированы между файловой системой 410 и файловой системой 430 сервера. На этапе 1120 создается единый индекс 450 файлов, который включает в себя по меньшей мере два элемента, относящиеся к каждому из файлов: первый, который представляет собой признак каждого из - состояния клиента, связанного с файловой системой 410 клиента, состояния сервера, связанного с файловой системой 430 сервера, и синхронизированного состояния; и второй, который связан по меньшей мере с одним каталогом единой структуры 106 каталогов, которая указывает одновременно на клиентскую структуру каталогов, с которой связаны файлы в файловой системе 410 клиента, и на серверную структуру каталогов, с которой связаны файлы в файловой системе 430 сервера. На этапе 1130 происходит оценка измененного состояния, связанного с файловой системой 410 клиента, в отношении по меньшей мере одного из файлов (например, в результате получения уведомления об изменении файла, которое было создано операционной системой клиентского устройства). На этапе 1140 осуществляется обновление единого индекса 450 по отношению по меньшей мере к одному из файлов, чтобы указать на измененное состояние вместо состояния клиента. На этапе 1150 осуществляется обновление информации о состоянии по отношению по меньшей мере к одному из файлов. На этапе 1160 на основе анализа осуществляется передача по меньшей мере одного из по меньшей мере одного файла серверу 230 и запись сервером 230 в файловой системе 430 сервера по меньшей мере одного из по меньшей мере одного переданного файла. В качестве не ограничивающего примера клиентское устройство может передавать инструкцию записать переданный(е) файл(ы) серверу вместе с одним или несколькими файлами.
На Фиг. 12 представлена блок-схема, соответствующая пятому примеру способа реализации настоящей технологии. Конкретнее, на Фиг. 12 представлен выполняемый на компьютере способ 1200 управления синхронизацией фалов между файловой системой 410 клиентского устройства (например, смартфона 210) и файловой системой 430 сервера (например, сервера 230), причем клиентское устройство соединено с сервером через сеть передачи данных.
Способ 1200 включает в себя несколько этапов. На этапе 1210 осуществляется идентификация файлов, которые будут синхронизированы между файловой системой 410 и файловой системой 430 сервера. На этапе 1220 создается единый индекс 450 файлов, который включает в себя по меньшей мере два элемента, относящиеся к каждому из файлов: первый, который представляет собой признак каждого из - состояния клиента, связанного с файловой системой 410 клиента, состояния сервера, связанного с файловой системой 430 сервера, и синхронизированного состояния; и второй, который связан по меньшей мере с одним каталогом единой структуры 106 каталогов, которая указывает одновременно на клиентскую структуру каталогов, с которой связаны файлы в файловой системе 410 клиента, и на серверную структуру каталогов, с которой связаны файлы в файловой системе 430 сервера. На этапе 1230 осуществляется получение признака измененного состояния, связанного с файловой системой сервера от сервера, по отношению по меньшей мере к одному из файлов. На этапе 1240 единый индекс 450 обновляется по отношению по меньшей мере к одному из файлов, чтобы указать на измененное состояние вместо состояния сервера. На этапе 1250 выполняется анализ обновленного единого индекса 450, соответствующего по меньшей мере одному из файлов. Например, генератор 460 файловых операций смартфона 210 может выполнять анализ информации о состоянии, включающий в себя единый индекс 450, как описано выше со ссылкой на Фиг. 7. На этапе 1250 на основе анализа осуществляется передача по меньшей мере одного из по меньшей мере одного файла от сервера клиентскому устройству, и по меньшей мере один из по меньшей мере одного файла записывается в файловой системы 410 клиента. В качестве не ограничивающего примера, смартфон 210 может инициировать загрузку по меньшей мере одного из по меньшей мере одного файла из файловой системы 230 сервера, а затем запись одного или нескольких полученных файлов в файловой системе 410 клиента, хранящейся в памяти 320 смартфона 210.
Модификации и улучшения вышеописанных вариантов осуществления настоящей технологии будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящей технологии ограничен только объемом прилагаемой формулы изобретения.