Локальные зеркала репозиториев Linux
Материал из RSU WiKi
Полное зеркалирование
Воспользуемся rsync. Для начала открываем на файрволе исходящий tcp-порт 873
Рассмотрим настройки зеркалирования на примере SuSE-репозитория Packman для OpenSUSE 10.3. Добавляем в cron.weekly:
rsync -avzrlHP rsync://packman.mirrors.skynet.be/packman/suse/10.3 /srv/ftp/suse/repos/packman/ &
Интеллектуальное зеркалирование
Часто в организации стоит задача экономии интернет-трафика и времени обновлений, при этом держать полное зеркало какого-либо репозитория нет никакой нужды. В таком случае логичным шагом было бы кеширование только тех пакетов, которые реально необходимы для linux-машин. Для этого воспользуемся возможностями замечательного web-сервера Nginx [1].
Создадим виртуальный хост и пропишем в его настройках:
location /packman/ {
root /srv/www/vhosts/packman.links2linux.org/;
error_page 404 = /fetch$uri;
error_page 403 = /fetch$uri;
}
location /packman/suse/10.3/ {
internal;
proxy_pass http://packman.mirrors.skynet.be/packman/suse/10.3/;
proxy_pass http://ftp.gwdg.de/pub/linux/packman/suse/10.3/;
proxy_store /srv/www/vhosts/packman.links2linux.org/$request_uri;
}
Обратите внимание на несколько строчек proxy_pass — балансировка нагрузки и переключение между зеркалами осуществялется на веб-сервере прозрачно для клиентских машин.
Для того, чтобы в директории кеша не накапливались старые версии файлов, в cron помещаем команду:
rsync -r --delete-before --existing rsync://packman.mirrors.skynet.be/packman/ /srv/www/vhosts/packman.links2linux.org/

