Сетевое железо - статьи

       

Для чего он нужен?


Современные средства и протоколы удалённого копирования файлов (например http, ftp, rcp), каждый раз полностью пересылают данные, несмотря на возможно уже существующею старую версию этих данных. Хотя и возможно воссоздать только изменения, например с помощью утилиты diff, если существует старая копия наряду с новой, и тем самым пересылать только изменения, но в практике это не всегда удобно и часто приводит к ошибкам.

Задачи алгоритма rsync:

  1. Он должен работать с произвольными данными, не только обычным текстом.
  2. Размер передаваемых данных должен быть примерно равен размеру diff файла.
  3. Он должен быстро работать с большими файлами.
  4. Алгоритм не должен иметь какие либо предварительные знания о статусе этих файлов, но должен эффективно находить их возможные сходства.
  5. Использовать мало ресурсов.
  6. Представим, что у нас имеются файлы A и B , и мы хотим обновить B таким образом, чтобы его содержимое было идентично содержимому файла A . Самый простой и очевидный способ - это скопировать A в B .

    Теперь представим, что эти файлы находятся на двух разных машинах соединённых медленным каналом связи, например, с помощью dialup модема. Если файл A большой, копирование A в B будет происходить очень медленно. Чтобы сделать это быстрей, мы можем сжать A , перед тем как пересылать его. Но обычный коэффициент сжатия колеблется от 2 до 4, что так же не подойдёт для нашей медленной связи.

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

    Но проблема в том, что для получения этих изменений, необходимо иметь возможность чтения обоих файлов. Поэтому, нам нужно иметь оба файла на одной из сторон нашего соединения. В противном случае, этот алгоритм использоваться не может. Для решения этой проблемы и был разработан алгоритм rsync.



    Содержание раздела