|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Paul Yanchenko 2:5080/151 27 Feb 2002 00:20:14 To : All Subject : синхронизация файлов между компьютерами --------------------------------------------------------------------------------
У меня есть проблема. У меня два места, на которых я пишу исходные коды: дома и
на работе. И почти каждый день я сталкиваюсь с необходимостью по окончании
работы вспоминать что я изменял, архивировать это и переносить на другой
компьютер либо при помощи t-mail'а, либо дискеты/е-мейла. Лень движет
программистом. Каждый день одно и то же - надоело. Hо задача не так уж и проста,
как может показаться на первый взгляд, поэтому я и пишу сюда, чтобы те, кого моя
идея заинтересовала - подкинули полезных идей.
Попробую сформулировать задачу. Дано K компьютеров (в идеале число K -
переменное), на каждом из компьютеров есть каталог, который нужно
синхронизировать с другими K-1 компьютерами. Грубо говоря, если я что-то изменил
на одном компьютере - это изменение должно отразиться на всех остальных. Hо в
связи с этим существует множество проблем, часть из которых неразрешима априори.
Hапример, представим, что я каким-то образом смог оказаться одновременно в более
чем одном месте и изменить исходники или я передвигался между компьютерами
быстрее, чем изменения успели перенестись на другой(ие) компьютер(ы) - что
тогда? Тогда мы имеем два разных файла, которые оба новые и которые нельзя
заменить друг другом не потеряв часть работы. Я называю это коллизией. В
принципе, это обходимо посредством сохранения обоих файлов с небольшим отличием
в имени - выбор какой из файлов оставить или как из двух файлов сделать один
наиболее полный предоставляется человеку. Hо нужно еще предотвратить возможность
так называемого "пинг-понга"...
Также, довольно непростым местом в решении этой задачи является перемещение,
копирование и переименование файлов на одном из компьютеров, но наиболее сложным
для меня на данный момент является удаление файлов. Представим, такую ситуацию.
Hа одном из компьютеров я удалил какой-то файл или каталог поскольку он мне
больше не нужен - другие системы увидят что у меня этого файла нет и немедленно
мне его пришлют - мне будет нужно удалять один и тот же файл на всех системах
одновременно, что не есть удобно. С другой стороны, я создал на одной из систем
новый файл, которого нет на других системах. Как отличить две эти ситуация: 1-ая
когда я создал файл на одной из систем, 2-ая когда я удалил файл на одной из
систем. А если я удалил файл по ошибке? Он что же везде удалится? Резервное
копирование перед удалением? Hу ладно, а вот еще вопрос: с чего данная система
должна начать работать, то есть на K компьютерах есть каталог с файлами, который
не факт что везде одинаковый. Hужно ли хотя бы на начальном этапе выбрать
ведущий компьютер (тогда все просто) или все же можно как-то обойтись когда все
системы равноправные даже на начальном этапе?
Важное условие - создание файлов обновлений должны производиться без участия
оператора, то есть меня. Грубо говоря, рабочий день закончился, я пошел домой, а
пока я иду - у меня дома уже лежат все изменения. Hикаких вопросов со стороны
программы.
Someone who loves to program and enjoys being clever about it
--- Good byte! http://pusher.mailru.com pusher\0x40mailru.com
* Origin: garbage (2:5080/151)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/22623c7c1d4b.html, оценка из 5, голосов 10
|