Gentoo Way Linux, Gentoo, Kubuntu, Ubuntu, Debian … компилируем всё!

10Мар/11Off

Linux — Debmirror и несколько зеркал

gentoo icon

Debmirror это perl скрипт который применяется для организации зекала репозитория Debian или Ubuntu.

Однако сам по себе он делает только то, для чего предназначен и не каплей больше (но настроек у него от этого не меньше и сделать зеркало он может по-различным протоколам и с различными условиями). Что же делать если нужно организовать несколько зеркал?

Т.к. адреса и параметры зеркал практически не меняются то самый верный способ - настроить и забыть, для чего и была написана небольшая "обёртка" на debmirror позволяющая просто и быстро запускать его с заранее заданными параметрами.

Скачать данный скрипт.
MD5: 6a588a149c58a5a236fd192978f34455

#!/bin/sh

# 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" в соответствии с нужными параметрами.

Понравилась статья?

Consider subscribing to our RSS feed!

Комментарии (0) Пинги (0)
  1. А чтобы к зеркалам был доступ из web-а достаточно прописать в nginx-е

        location ~ /mirror/ {
            root /disk;
            autoindex on;
        }

Trackbacks are disabled.