Ещё один вариант скрипта для зеркалирования Debian/Ubuntu

По немногочисленным просьбам, выкладываю свой вариант скрипта. В отличие от канонического, его удобнее использовать при запуске из cron, т.к. он ведёт лог; в остальном же — самый тривиальный debmirror.

Это не полноценная документация по созданию репозиториев debian. При этом, это и не готовое решение, т.к. скорее всего потребует доработки с вашей стороны. Можно рассматривать этот пример как первый шаг к тому, чтобы организовать собственную систему зеркалирования репозитория. Не бойтесь изменять и пробовать, привнося в приведённый ниже пример что-то своё. Скорее всего, вам пригодится информация, изложенная в man-странице debmirror, советую изучить её.

К созданию зеркал Debian существует несколько подходов: начиная от использования совершенно не годящегося для этой цели wget, более подходящего rsync и заканчивая специализированными утилитами, наподобе apt-mirror. Эта статья рассчитана на использование инструмента debmirror. Установим пакет, содержащий его:

$ sudo apt-get install debmirror

Следующий скрипт служит для зеркалирвоания репозитриев Ubuntu Lucid и Maverick, а также Debian Lenny и Squeeze для платформ i386 и amd64.

#!/bin/bash
function start_mirroring {
if /usr/bin/debmirror --progress --nosource --ignore-release-gpg \
--md5sums --host=$host --root=$root --dist=$dist --section=$section \
--method=$method --arch=$arch $mirrordir
then echo "$name: done" >> $logfile
else echo "$name: error" >> $logfile
fi
}
logfile=<путь_к_файлу_логов>
echo "===`date`===">> $logfile
# Ubuntu
name="Ubuntu: lucid, maverick "
host=archive.ubuntu.com
method=ftp
arch=i386,amd64
root=ubuntu
dist=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates,maverick,maverick-backports,maverick-proposed,maverick-security,maverick-updates
section=main,restricted,universe,multiverse
mirrordir=<путь_к_каталогу_назначения_для_Ubuntu>
start_mirroring
# Debian
name="Debian: lenny, squeeze"
host=ftp.debian.org
method=ftp
arch=i386,amd64
root=debian
dist=lenny,squeeze
section=main,contrib,non-free,main/debian-installer
mirrordir=<путь_к_каталогу_назначения_для_Debian>
start_mirroring

Обратите внимание, что каталоги для зеркал Ubuntu и Debain должны быть различными. К примеру, можно использовать /var/www/mirrors/ubuntu/ и /var/www/mirrors/debian/ соответственно. Не забывайте, что репозиторий одного дистрибутива под одну архитектуру занимает около 30 Гб, так что суммарно для работы приведённого выше скрипта потребуется около 240 Гб. Заблаговременно побеспокойтесь о том, чтобы не закончилось место. Естественно, позаботьтесь также о том, чтобы у пользователя, от имени которого запускается скрипт, были права на создание и удаление файлов в каталогах, куда производится зеркалирование.

Я сторонник того, что без особой необходимости не стоит запускать что бы то ни было от рута. Поэтому скрипт запускается от обычного пользователя. Лог у меня располагаются в домашнем каталоге (хотя можно писать его и, на пример, в /var/log/debmirror.log, предварительно дав пользователю права на запись в этот файл).

Для настройки запуска скрипта по расписанию с использованием cron, выполните от имени пользователя команду

$ crontab -e

По-умолчанию откроется редактор nano. Допишите в конец файла строку для запуска вашего скрипта, что-нибудь вроде

0 5 * * * /<путь_к_скрипту>/debmirror.sh

чтобы делать зеркалирование каждый день в 5 часов утра. Более подробно о синтаксисе crontab можно прочитать, например, в Википедии. Нажмите Crtl-o для сохранения изменений, и Ctrl-x для выхода.

На этом моя часть работы заканчивается, и начинается ваша 😉

Ещё один вариант скрипта для зеркалирования Debian/Ubuntu: 1 комментарий

  1. В двух словах, считаю использование для зеркалирования методов типа ftp или http анахронизмам. rsync намного экономичнее, поэтому привожу скрипт по моему мнению больше подходящий для зеркалирования (пример рабочий используется для lucid), с учетом предложенного выше скрипта, вам не трудно будет совместить оба скрипта в один(и да исходники не обязательно зеркалировать, у меня идет с исходниками).

    #!/bin/bash -x
    /usr/bin/debmirror --progress --source 
    --md5sums --host=archive.ubuntu.com --root=:ubuntu 
    --dist=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates 
    --section=main,restricted,universe,multiverse 
    --method=rsync --arch=i386,amd64

Добавить комментарий