Поддержка зеркал FreeBSD
Пред. |  | След.

# 3. Как вести зеркало FreeBSD

Теперь вам известно, какая потребуется машина и как предоставлять сервисы, но не как получить их самому. :-) В этом разделе описывается процесс ведения зеркала и поддержания его в актуальном состоянии, в том числе какие инструменты использовать и какие сайты выбирать в качестве источников для синхронизации.

## 3.1. FTP

Файлы, доступные по FTP, составляют большую часть зеркала. Они включают дистрибутивные наборы, необходимые для установки по сети, ветви (branches), в которых отражено текущее состояние исходных текстов, образы ISO для записи компакт-дисков с дистрибутивами для установки, образами ''живых'' файловых систем и пакетами, дерево портов, исходные дистрибутивы для сборки портов и кучу готовых пакетов. И, разумеется, все вышеописанное -- для разных версий FreeBSD и различных архитектур.

### 3.1.1. При помощи программ для FTP-зеркалирования

Для выкачивания файлов вы можете использовать программу FTP-зеркалирования. Вот некоторые из наиболее часто использующихся:

- `ftp/mirror`

- `ftp/ftpmirror`

- `ftp/emirror`

- `ftp/spegla`

- `ftp/omi`

- `ftp/wget`

Ранее наиболее популярным вариантом был `ftp/mirror`, хотя из-за того, что эта программа написана на perl(1), существуют различные ограничения, в особенности при зеркалировании больших файловых структур, таких как FreeBSD. Утверждается, впрочем, что в текущей версии последняя проблема исправлена за счет дополнительного алгоритма сравнения структуры каталогов.

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

### 3.1.2. При помощи rsync

Более эффективным будет синхронизация FTP-области при помощи rsync. Для этого следует установить пакет `net/rsync`, который был описан в разделе Разд. 2.4.2. Поскольку доступ по протоколу rsync не является обязательным, выбранный вами сайт может его не поддерживать. Возможно, вам придется немного поискать в сетевой окрестности зеркало, поддерживающее rsync.

> Замечание: Поскольку от количества клиентов rsync ощутимо зависит загрузка сервера, большинство администраторов вводят ограничения доступа. Для поддержания зеркала вам следует связаться с администратором сайта, с которым вы будете синхронизироваться, для уточнения локальных правил и, возможно, для внесения в них исключения для вас (поскольку вы также поддерживаете зеркало).

Строка для синхронизации FreeBSD по rsync выглядит примерно так:

    % rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/

Загляните в документацию по rsync, также доступную по адресу http://rsync.samba.org/ за дополнительной информацией по различным опциям rsync. Обратите внимание, что в случае синхронизации модуля целиком (а не отдельного каталога) необходимо явно указать результирующий каталог, потому что каталог с именем модуля (в данном случае "FreeBSD") не создается. Для поддержания актуальности вам потребуется создать скрипт для запуска подобной команды из cron(8).

### 3.1.3. При помощи CVSup

Немногие сайты, в первую очередь центральный `ftp-master.FreeBSD.org` предоставляют для синхронизации FTP-области доступ по протоколу CVSup. Вам потребуется клиент CVSup, предпочтительно из пакета `net/cvsup` (см. также Разд. 2.4.4). Пример конфигурационного файла (`supfile`) для синхронизации с `ftp-master.FreeBSD.org`:

    #
    # FreeBSD archive supfile from master server
    #
    *default host=ftp-master.FreeBSD.org
    *default base=/usr
    *default prefix=/pub
    #*default release=all
    *default delete use-rel-suffix
    *default umask=002

    # If your network link is a T1 or faster, comment out the following line.
    #*default compress

    FreeBSD-archive release=all preserve

Судя по всему, синхронизация при помощи CVSup -- лучший по эффективности способ поддержки зеркала, однако он доступен лишь с небольшого числа сайтов.

> Замечание: Прочтите документацию по CVSup, например, cvsup(1), и обратите внимание на опцию `-s`. Она может уменьшить объем операций ввода-вывода, предполагая, что записанная информация о каждом файле корректна.

## 3.2. Зеркалирование CVS репозитория

Существует несколько способов синхронизации CVS репозитория. CVSup наиболее общий метод.

### 3.2.1. Использование CVSup

Программа CVSup немного описана в (Разд. 2.4.4 и Разд. 3.1.3).

Настроить CVSup зеркало очень просто. Установка `net/cvsup-mirror` проверит, что все нужные программы установлены и затем соберет всю необходимую информацию для конфигурирования зеркала.

> Замечание: Не забудьте почитать полезную подсказку здесь.

### 3.2.2. Другие методы

Использование методов, отличных от CVSup, не рекомендуется. Тем не менее, мы кратко упомянем их. Поскольку большая часть зеркал дает доступ к репозиторию CVS в числе прочих файлов, доступных по FTP, по пути `/pub/FreeBSD/development/FreeBSD-CVS`, могут быть использованы:

- FTP

- Rsync

- HTTP

> Важно: AnonCVS не может использоваться для зеркалирования CVS репозитория, так как CVS не разрешает сам доступ к репозиторию, а только к извлечённым версиям модулей.

## 3.3. Зеркалирование страниц WWW

Лучшим способом будет извлечение (check out) из репозитория CVS модуля www. При условии наличия у вас копии репозитория, все, что для этого потребуется -- выполнить команду

    % cvs -d /home/ncvs co www

и сформировать задание для cron, которое будет регулярно выполнять операцию `cvs up -d -P`, например, каждый раз после обновления копии репозитория. Разумеется, файлы должны находиться в иерархии, доступной для публичного веб-доступа. Мы сознательно не будем обсуждать здесь процесс установки и конфигурации веб-сервера для этих целей.

Если у вас нет локальной копии репозитория, можно использовать CVSup для синхронизации копии веб-страниц. Пример конфигурации можно найти в файле `/usr/share/examples/cvsup/www-supfile`. Приведем его здесь:

    #
    # WWW module supfile for FreeBSD
    #
    *default host=cvsup3.de.FreeBSD.org
    *default base=/usr
    *default prefix=/usr/local
    *default release=cvs tag=.
    *default delete use-rel-suffix

    # If your network link is a T1 or faster, comment out the following line.
    *default compress

    # This collection retrieves the www/ tree of the FreeBSD repository
    www

Использование пакета `ftp/wget` или иных инструментов для создания веб-зеркал не рекомендуется.

### 3.3.1. Зеркала документации FreeBSD

Поскольку многие веб-страницы ссылаются на документацию, хорошей идеей является поддержка зеркала документации FreeBSD совместно с прочими зеркалами. Надо отметить, что этот процесс не столь тривиален, как поддержка зеркала веб-страниц самих по себе.

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

    #
    # FreeBSD documentation supfile
    #
    *default host=cvsup3.de.FreeBSD.org
    *default base=/usr
    *default prefix=/usr/share
    *default release=cvs tag=.
    *default delete use-rel-suffix

    # If your network link is a T1 or faster, comment out the following line.
    #*default compress

    # This will retrieve the entire doc branch of the FreeBSD repository.
    # This includes the handbook, FAQ, and translations thereof.
    doc-all

Затем, вам потребуется несколько пакетов. К счастью, специально для этого существует мета-порт `textproc/docproj`. Также, необходимо установить некоторые переменные окружения, например `SGML_CATALOG_FILES`, и переменные в файле `/etc/make.conf`, главным образом переменную `DOC_LANG` (используйте файл `/usr/share/examples/make.conf` как шаблон). После этого можно выдать команду `make` в главном каталоге документации (по умолчанию это `/usr/share/doc`). Как и прежде, эти каталоги должны быть доступны для вашего веб-сервера (проверьте, что ссылки ведут в нужные места).

> Важно: Процесс подготовки и построения документации, а также многие сопутствующие вопросы, подробно описан в документе Учебник по Проекту Документирования FreeBSD. Прочтите этот документ, в особенности если у вас возникли проблемы со сборкой стандартного комплекта документации.

## 3.4. Как часто синхронизироваться?

Каждое зеркало должно регулярно обновляться. Вам потребуется какой-то набор скриптов, выполняемых посредством cron(8). Поскольку каждый администратор, как правило, пишет такие скрипты сам и на свой лад, мы не можем выдать конкретных указаний. Общие же советы выглядят так:

1. Создайте скрипт с командой, которая запустит нужное приложение для обновления зеркала. Рекомендуем использовать скрипт на языке обычного `/bin/sh`.

2. Добавьте команд перенаправления вывода, чтобы записать диагностику работы в файл.

3. Попробуйте, как ваш скрипт работает. По завершении проверьте логи.

4. При помощи утилиты crontab(1) добавьте ваш скрипт в таблицу регулярных заданий crontab(5) соответствующего пользователя. Это должен быть пользователь, отличный от пользователя FTP-даемона, чтобы файлы в FTP-области без атрибута "чтение для всех" не были доступны анонимным FTP-пользователям. Данное свойство используется для тестирования перед выходом новых релизов, для того чтобы удостовериться, что все официальные зеркала содержат все необходимые файлы к моменту официального объявления релиза.

Некоторые рекомендуемые установки частоты обновления:

- FTP-набор: раз в сутки

- репозиторий CVS: раз в час

- WWW-страницы: раз в сутки

Пред. | Начало | След.
Требования к зеркалам FreeBSD |  | С какого сервера синхронизироваться

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.