Создание локального зеркала репозитория Arch Linux. Краткое руководство с использованием rsync и webfs.
Установка необходимых компонентов
Для быстрой развертки зеркала я использовал rsync, webfs, # /dev/brain :) Данное ПО было выбрано мной за простоту и скорость развертки.
Установка
pacman -S webfs rsync
Конфигурирование компонентов
Конфигурирование rsyncd
Для начала определимся с путями к зеркалу, в моем случае это ‘’‘/home/username/repo/arch/’‘’
Затем создадим конфигурационный файл, если его еще нет:
nano /etc/rsyncd.conf
или
vim /etc/rsyncd.conf
или
mcedit /etc/rsyncd.conf
тут уже вопрос вкуса и привычки.
Содержание примерно следующее:
1 2 3 4 5 6 7 8 9 |
|
Конфигурирование webfsd
nano /etc/conf.d/webfsd
или
vim /etc/conf.d/webfsd
или
mcedit /etc/conf.d/webfsd
Содержимое файла у меня получилось таким:
WEBFSD_ARGS=“-p 8000 -u nobody -R /home/username/repo/arch/ -f index.html”
На этом стадия конфигурирования завершена, приступим написанию скриптов.
Написание скриптов
- Скрипт синхронизации с зеркалом интернета
repo-update.sh
Сам скрипт:
1 2 3 4 5 6 7 8 9 |
|
Расшифровка по строкам:
Объявляем обработчик скрипта у нас это bash
Переменная remote указывает интернeт сервер, с которого мы синхронизируемся
Переменная local указывает директорию куда синхронизировать репозитории
Переменная repos является массивом названий репозитариев
Открываем цикл переборки массива repos
Проверяем наличие текущий индекс на наличие в массиве
Запускаем rsync с параметрами -avzhP —delete (описание параметров можно посмотреть выполнив в терминале man rsync) и подставляем наши переменные.
Заканчиваем проверку
Закрываем цикл
Недостатки
Невозможно пропустить ненужные пакеты
Нет проверки на доступность соеденения с интернетом
Для изменения списков синхронизируемых репозиториев приходиться править скрипт
Все вышеуказанные недостатки очень просто исправить.
Дадим скрипту права на выполение:
chmod +x repo-update.sh
Скрипт запуска и остановки сервера
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Далее можно в /etc/rc.d/ создать файл repo и поместить туда скрипт, после чего дать ему права на выполнение
chmod +x /etc/rc.d/repo
и прописать в секцию daemons файла /etc/rc.conf
Запуск синхронизации по cron
Тут все очень просто :) создам файл cron со следующим содержанием:
30 */4 * * * /home/username/repo-update.sh
затем
$ crontab ./cron
На этом мы и закончим. Пожалуй мой метод далеко не без недостатков, но он работает и это самое главное :)
См. так же: