Репозитории: зеркалирование

Преамбула моего первого поста в этом блоге такова. Имею дома три компьютера с предустановленной Windows Vista Arch Linux (семья большая, на самом деле, дома 4 компьютера), и как многим арчеводам известно, репозитории довольно часто обновляются, и достаточно часто обновляются одни и те же компоненты на разных машинах. Отсюда возникла идея создать общее место, откуда все остальные машины могут обновляться. В таком случае получается много возни, ведь появляются компоненты, которых нет пока на других машинах, их тоже нужно копировать в общий кеш. В итоге получается, что нужно следить за имеющимися компонентами, за их состоянием, за постоянно появляющимися компонентами, за их состоянием тоже, и делать это всё надо на нескольких машинах. Следовательно, овчинка не стоит выделки. Выходом, в моем случае оказалось очень простое решение.

Ещё во времена моего обживания семейства Ubuntu я понимал мощь репозиториев. Как видно из примера, создавать его из кеша было не очень удобно, а ширина канала (1 Mbit днем и 2 Mbit ночью) позволяла мне выкачать все репозитории и поддерживать их актуальными до сих пор. Сначала это была одна архитектура, потом, по просьбе трудящихся, была добавлена поддержка x86_64, которая не востребована мной. И я всё чаще задумываюсь об отказе в зеркалировании этой архитектуры, моё скромное мнение такое, что дома она ещё не нужна. Но ведь речь не об этом.

После такого большого вступления, небольшое руководство по созданию зеркала в домашних условиях, а зеркалировать будем extra, community, core. Что нужно:
1. Достаточно места на носителе информации. В моем случае это HDD, обе архитектуры занимают ~22.8 Gb. Для одной соответственно будет около 12 Gb.
2. rsync (ставится тривиально: pacman -S rsync)
3. Скрипт для автоматического обновления и запуска из /usr/bin или же команда для ручного обновления.
В моём случае всё просто — обновляю всё вручную, а чтобы не вводить каждый раз длинную команду просто создал короткий и запоминающийся алиас. Так как с моего компьютера сижу только я, то и проблем тут не возникает.

Еще один важный момент - сервер для обновления. Раньше я обновлялся с mir1.archlinuxfr.org, но по ряду причин пришлось пересесть на другой сервер. Какой из серверов выбрать Вам, я не знаю, и не буду раскрывать своего, по ряду причин (:

Переходим к делу, команда синхронизации core:

rsync -avz --delete example.com::archlinux/core /media/sdb6/arch/

Как видно из строки, все файлы складываются в каталог arch на диске, смонтированном в /media/sdb6/, старые файлы удаляются, обновления берутся из каталога archlinux/core на сервере. Аналогично будет и для других репозиториев. Чтобы зеркалировать только одну архитектуру, скажем i686, добавляем в список параметров следующее:
--exclude=os/x86_64

Собираем из всего этого одну команду и создаём алиас, который записывается в .bashrc в домашний каталог:
alias mirsync='rsync -avz --delete --exclude=os/x86_64 example.com::archlinux/core /media/sdb6/arch/ && rsync -avz --delete --exclude=os/x86_64 example.com::archlinux/extra /media/sdb6/arch/ && rsync -avz --delete --exclude=os/x86_64 example.com::archlinux/community /media/sdb6/arch/'

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

Post Scriptum: я по-прежнему занимаюсь распространением DVD-дисков с репозиториями Arch Linux, подробней здесь.

Комментарии (2)

stanislav | 29.05.09 20:58

С дебютом! : )

tinman321 | 29.05.09 23:53

спасибо (:

Отправить комментарий