Linux — Debmirror и несколько зеркал
Debmirror это perl скрипт который применяется для организации зекала репозитория Debian или Ubuntu.
Однако сам по себе он делает только то, для чего предназначен и не каплей больше (но настроек у него от этого не меньше и сделать зеркало он может по-различным протоколам и с различными условиями). Что же делать если нужно организовать несколько зеркал?
Т.к. адреса и параметры зеркал практически не меняются то самый верный способ - настроить и забыть, для чего и была написана небольшая "обёртка" на debmirror позволяющая просто и быстро запускать его с заранее заданными параметрами.
Скачать данный скрипт.
MD5: 6a588a149c58a5a236fd192978f34455
# Author: Dmitriy Beketov (admin at gentooway dot ru)
# Site: http://gentooway.ru
# Licence: Attribution-Noncommercial 3.0 Unported (http://creativecommons.org/licenses/by-nc/3.0/)
# Где брать debmirror, вынесено в отдельную настройку
# т.к. его можно запускать на любой системе где есть
# perl с необходимыми пакетами (что ему нужно он скажет
# при первом запуске и будет ругаться пока всё не поставите)
DEBMIRROR="/usr/local/bin/debmirror"
# Директория где будет лежать наше зеркало
MY_MIRROR="/disk/mirror"
# Разделы по-умолчанию, которые нужно отзеркалить
MY_SECTION="main,restricted,universe,multiverse"
MY_DIST="maverick,maverick-updates,maverick-security,maverick-backports,maverick-proposed"
# Архитектура по-умолчанию
MY_ARCH="amd64"
# Адрес прокси сервера, если нужно
MY_PROXY="http://http.proxy.home:8080/"
# По-умолчанию чистим репозиторий от лишних файлов
# Можно изменить в индивидуальной настройке секции
# Полезно когда часть репозитория зеркалируется с одного сервера, а часть - с другого
MY_CLEANUP="1"
# Разичные параметры, общие для всех зеркал
MY_ADD="--nosource --progress --verbose --ignore-release-gpg"
# Куда сохранять логи работы при запуске в тихом режиме (например из крона)
LOG_DIR="/var/log/"
# Секции настроек
case "$1" in
corbina)
# Папка в $MY_MIRROR куда будет сохранено это зеркало
D_FOLDER="ubuntu"
# Сервер репозитория
D_HOST="ftp.corbina.net"
# Путь к репозироию на сервере
D_ROOT="pub/Linux/ubuntu"
# Протокол по которому будет загружатсья зеркало
D_METHOD="http"
# Что зеркалировать из этого репозитория, в данном случае по-умолчанию
D_DIST=$MY_DIST
D_SECTION=$MY_SECTION
# Удалять лишние файлы или нет
D_CLEANUP=$MY_CLEANUP
# Можно дописать что-нибудь ещё
D_ADD=$MY_ADD
;;
corbina2)
D_FOLDER="ubuntu"
D_HOST="mirror2.corbina.ru"
D_ROOT="ubuntu"
D_METHOD="http"
D_DIST=$MY_DIST
D_SECTION=$MY_SECTION
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
fr)
D_FOLDER="ubuntu"
D_HOST="ubuntu-archive.mirrors.proxad.net"
D_ROOT="ubuntu"
D_METHOD="http"
D_DIST=$MY_DIST
D_SECTION=$MY_SECTION
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
yandex)
D_FOLDER="ubuntu"
D_HOST="mirror.yandex.ru"
D_ROOT="ubuntu"
D_METHOD="http"
D_DIST=$MY_DIST
D_SECTION=$MY_SECTION
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
firefox)
D_FOLDER="ubuntu-mozilla"
D_HOST="ppa.launchpad.net"
D_ROOT="ubuntu-mozilla-daily/ppa/ubuntu"
D_METHOD="http"
D_DIST="maverick"
D_SECTION="main"
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
vbox)
D_FOLDER="virtualbox"
D_HOST="download.virtualbox.org"
D_ROOT="virtualbox/debian"
D_METHOD="http"
D_DIST="maverick"
D_SECTION="non-free,contrib"
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
medibuntu)
D_FOLDER="medibuntu"
D_HOST="packages.medibuntu.org"
D_ROOT="/"
D_METHOD="http"
D_DIST="maverick"
D_SECTION="free,non-free"
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
# Шаблон
NEW_REPO_NAME)
D_FOLDER=""
D_HOST=""
D_ROOT=""
D_METHOD="http"
D_DIST=$MY_DIST
D_SECTION=$MY_SECTION
D_CLEANUP=$MY_CLEANUP
D_ADD=$MY_ADD
;;
*)
# Usage заполняем ручками :(
echo "Usage: $0 corbina|corbina2|fr|yandex|vbox|medibuntu|firefox [cron]"
exit 1
;;
esac
# Проверим можем ли записать в репозиторий
[[ -w $MY_MIRROR ]] || (echo "Directory ${MY_MIRROR} in not writable" && exit 1);
if [ "x${D_CLEANUP}" == "x1" ]; then
D_CLEANUP="--cleanup"
else
D_CLEANUP=""
fi;
if [ "x${MY_PROXY}" != "x" ]; then
MY_PROXY="--proxy=${MY_PROXY}"
fi;
if [ "x$2" != "x" ]; then
cd $MY_MIRROR && \
$DEBMIRROR $D_FOLDER --host=$D_HOST \
$MY_PROXY \
--root=$D_ROOT \
--method=$D_METHOD $D_ADD \
--dist=$D_DIST --section=$D_SECTION \
--arch=$MY_ARCH \
$D_CLEANUP \
$D_ADD >> ${LOG_DIR}mirror.$1.log
else
cd $MY_MIRROR && \
$DEBMIRROR $D_FOLDER --host=$D_HOST \
$MY_PROXY \
--root=$D_ROOT \
--method=$D_METHOD $D_ADD \
--dist=$D_DIST --section=$D_SECTION \
--arch=$MY_ARCH \
$D_CLEANUP \
$D_ADD
fi;
exit 0
Чтобы добавить своё зеркало - просто скопируйте или измените секцию "NEW_REPO_NAME" в соответствии с нужными параметрами.
10 марта, 2011 - 22:39
А чтобы к зеркалам был доступ из web-а достаточно прописать в nginx-е
root /disk;
autoindex on;
}