Автор Тема: Sisyphus-mirror (локальное зеркало)  (Прочитано 4788 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #15 : 23.08.2017 11:23:47 »
Что-то не докачал.
Если возможно приведите пример консольной команды rsync как это исправить?

rsync -vza --timeout=3000 --progress \
--exclude "SRPMS*/" \
--exclude "arm*/" \
--exclude "x86_32*/" \
--exclude "x86_64*/" \
--exclude "*-debuginfo-*" \
rsync://mirror.datacenter.by/ALTLinux/t7/branch/ \
/run/media/user/Transcend2/ALTLinux/t7/branch/
rsync параметры \
исключения \
источник \
назначение

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #16 : 23.08.2017 12:24:40 »
rsync параметры \
исключения \
источник \
назначение
Спасибо проверю.
Действительно не закачал.
Подобью итоги:
1) Конфиг-файл:
# cat /etc/sisyphus-mirror/sisyphus-mirror.conf
# source mirror
SRCROOT=rsync://rsync.altlinux.org/ALTLinux

# distination directory
DESTROOT=/var/ftp/ALTLinux

# repos for sync
LIST="p8/branch/"

# architectures for sync
#ARCH="noarch i586 x86_64 x86_64-i586 x86_32"
ARCH="noarch x86_64 x86_64-i586"

# other argumets for rsync
# recommended for interactive mode:
#ARGS="-rltvhmH --progress --delete-delay --delete-excluded --stats"

ARGS="-va -stats --progress --delete-after"

INTERACTIVE=0

# temp directory for synchronization
TMPDEST=.new

# directory for backups
BACKUP_DIR=/var/ftp/archive

# if you do not want to download some packages, use this file
EXCLUDE_FILE=/etc/sisyphus-mirror/exclude

# this file needed when ARCH variable is used
INCLUDE_FILE=/etc/sisyphus-mirror/include

# directory for custom configs and logs
RSHOME="$HOME/.sisyphus-mirror"

Рекомендованные параметры ARGS="-rltvhmH --progress --delete-delay --delete-excluded --stats"
как-то неверно отработали зеркалирование для моих нужд, по этому воспользовался советом из альт wiki и задействовал эти параметры: ARGS="-va -stats --progress --delete-after"

Все прошло успешно и закачал пропуски, но ошибка вложенного каталога не ушла, да и ладно, пока жду вашего ответа, по настройке  переменной $mirror.old

2) Структура каталогов, согласно параметрам, странной получилась и на клиенте пришлось указать дополнительную вложенность:
# cat /etc/apt/sources.list.d/alt.list | grep "ftp:"

rpm [p8] ftp://192.168.8.67/ALTLinux p8/branch/branch/x86_64 classic
rpm [p8] ftp://192.168.8.67/ALTLinux p8/branch/branch/x86_64-i586 classic
rpm [p8] ftp://192.168.8.67/ALTLinux p8/branch/branch/noarch classic

Может проблема кроется здесь?
# repos for sync
LIST="p8/branch/", а надо LIST="p8/branch" ???

И собственно проверка:
# apt-get update
Получено: 1 ftp://192.168.8.67 p8/branch/branch/x86_64 release [879B]
Получено: 2 ftp://192.168.8.67 p8/branch/branch/x86_64-i586 release [537B]
Получено: 3 ftp://192.168.8.67 p8/branch/branch/noarch release [673B]
Получено 2089B за 0s (7536B/s).
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64/classic pkglist
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64/classic release
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64-i586/classic pkglist
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64-i586/classic release
Найдено ftp://192.168.8.67 p8/branch/branch/noarch/classic pkglist
Найдено ftp://192.168.8.67 p8/branch/branch/noarch/classic release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено

Осталось исправить некоторые недочеты и экспресс мануал будет завершен.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #17 : 23.08.2017 12:58:33 »
Может проблема кроется здесь?
# repos for sync
LIST="p8/branch/", а надо LIST="p8/branch" ???

При зеркалировании по rsync
- со слэшем зеркалируется содержимое каталога;
- без слэша, зеркалируется сам каталог

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #18 : 23.08.2017 13:01:31 »
rpm [p8] ftp://192.168.8.67/ALTLinux p8/branch/branch/x86_64 classic
rpm [p8] ftp://192.168.8.67/ALTLinux p8/branch/branch/x86_64-i586 classic
rpm [p8] ftp://192.168.8.67/ALTLinux p8/branch/branch/noarch classic

# apt-get update
Получено: 1 ftp://192.168.8.67 p8/branch/branch/x86_64 release [879B]
Получено: 2 ftp://192.168.8.67 p8/branch/branch/x86_64-i586 release [537B]
Получено: 3 ftp://192.168.8.67 p8/branch/branch/noarch release [673B]
Получено 2089B за 0s (7536B/s).
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64/classic pkglist
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64/classic release
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64-i586/classic pkglist
Найдено ftp://192.168.8.67 p8/branch/branch/x86_64-i586/classic release
Найдено ftp://192.168.8.67 p8/branch/branch/noarch/classic pkglist
Найдено ftp://192.168.8.67 p8/branch/branch/noarch/classic release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено

Ветка на сервере:
http://ftp.altlinux.org/pub/distributions/ALTLinux/p8/branch/i586/RPMS.classic/

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #19 : 23.08.2017 13:56:55 »
Может проблема кроется здесь?
# repos for sync
LIST="p8/branch/", а надо LIST="p8/branch" ???

При зеркалировании по rsync
- со слэшем зеркалируется содержимое каталога;
- без слэша, зеркалируется сам каталог

Например:
На носителе руками создаётся каталог
/run/media/user/Transcend2/ALTLinux/t7/branch/

Затем в него зеркалируется содержимое этого каталога
rsync://mirror.datacenter.by/ALTLinux/t7/branch/

Зачем руками?
Чтобы не добавлять images в --exclude, который лежит на сервере в том же каталоге платформы рядом с каталогом branch и дефолтом случайно не зазеркалировать и образы, значительно увеличив объём трафика, скорость которого по техническим причинам не может быть более ~4.6 мегабит (если оценивать не по спидтест, а по реальной максимальной скорости входящих данных).

Оффлайн igorigor76

  • Завсегдатай
  • *
  • Сообщений: 651
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #20 : 23.08.2017 15:18:19 »
...
Подключайтесь к диалогу и приводите свои конфигурации и рекомендации...
На "сервере" два скрипта:
1. #!/bin/bash
/opt/scripts/mirror/p8/_mirror.sh &> /mnt/data2/z/mirror/p8/`date +%Y-%m-%d-%X`_mirror.log
2. #!/bin/bash
while ! rsync -va --partial --stats --timeout=60 --delete-after --exclude *debuginfo* --exclude *arm/** --exclude *aarch64/** --exclude *armh/** --exclude doc/** --exclude *SRPMS* --exclude contents_index --exclude *.src.* rsync.altlinux.org::ALTLinux/p8/branch/ /mnt/data2/z/mirror/p8/branch/; do :; done
Первый запускает второй, "выхлоп" записывается в log файл.

Папка с зеркалом расшарена через samba.

На компьютерах:
1. В файле /etc/apt/sources.list.d/alt.list закомментированы все записи
2. Файл  /etc/apt/sources.list для i586 со следующим содержимым:
# Local package resource list for APT goes here.
# To inspect package defined part, see /etc/apt/sources.list.d/*.list

#rpm file:///mnt/data2/z/mirror/p7/branch x86_64-i586 classic
rpm [updates] file:///mnt/z/mirror p8/branch/i586 classic
rpm [updates] file:///mnt/z/mirror p8/branch/noarch classic

Размер:# du -sh /mnt/data2/z/mirror/p8
65G /mnt/data2/z/mirror/p8

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #21 : 23.08.2017 15:45:36 »
--exclude contents_index
Интересно.
На что то влияют эти индексы? Я их видел, они по 300 и 140 МБ. Почему именно так?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #22 : 23.08.2017 17:09:57 »
--exclude contents_index
Интересно.
На что то влияют эти индексы? Я их видел, они по 300 и 140 МБ. Почему именно так?
Это список файлов в пакетах (информация для будущего apt-file). На сам apt никак не влияют.
Андрей Черепанов (cas@)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #23 : 24.08.2017 16:54:06 »
Может проблема кроется здесь?
# repos for sync
LIST="p8/branch/", а надо LIST="p8/branch"

Так и есть, необходимо было указать "p8/branch" без '/' и добавил строчку LINK_LIST="p8/branch".
Так как мне трудно по неопытности читать скрипт (/usr/bin/sisyphus-mirror) и нет описания этим параметрам, то выкладываю содержание рабочего конфиг-файла как есть:
1)# cat /etc/sisyphus-mirror/sisyphus-mirror.conf
# source mirror
SRCROOT=rsync://rsync.altlinux.org/ALTLinux
#SRCROOT=rsync://mirror.yandex.ru/altlinux
#SRCROOT=rsync://ibiblio.org/Linux/distributions/altlinux
#SRCROOT=rsync://ftp.linux.kiev.ua/ALTLinux

# distination directory
DESTROOT=/var/ftp/ALTLinux
# example: we can use sisyphus-mirror for synchronize repos to removable media
#DESTROOT=/media/disk/ALTLinux

# repos for sync
LIST="p8/branch"
#LIST="Sisyphus 4.0/branch updates backports people/shrek"

# architectures for sync
#ARCH="noarch i586 x86_64 x86_64-i586 x86_32"
ARCH="noarch x86_64 x86_64-i586"
# repos for search hardlinks
#LINK_LIST="Sisyphus p7/branch t7/branch"
LINK_LIST="p8/branch"

# speed limit in Kb/s (--bwlimit=)
#SPEED=512
#SPEED=

# other argumets for rsync
# recommended for non-interactive mode:
#ARGS="-rltmvH --delete-delay --delete-excluded --stats
ARGS="-avz --stats --delete-after --progress"
# recommended for interactive mode:
#ARGS="-rltvhmH --progress --delete-delay --delete-excluded --stats"

# if 1, print output to stdout
INTERACTIVE=0

# temp directory for synchronization
TMPDEST=.new

# backup type - READ README.UTF8
#BACKUP_TYPE=one
#BACKUP_TYPE=snapshots

# directory for backups
#BACKUP_DIR=/var/ftp/ALTLinux/previous-state
#BACKUP_DIR=/var/ftp/ALTLinux/archive

# if you do not want to download some packages, use this file
EXCLUDE_FILE=/etc/sisyphus-mirror/exclude

# this file needed when ARCH variable is used
INCLUDE_FILE=/etc/sisyphus-mirror/include

# directory for custom configs and logs
RSHOME="$HOME/.sisyphus-mirror"

# number of tries
#MAXATTEMPTS=10

# rsync protocol timeout (--timeout)
#TMOUT1=500

# pause between attempts
#TMOUT2=15

# http proxy server with HTTP CONNECT (host:port)
#RSYNC_PROXY=localhost:3128

И ошибка с вложенностью ушла.
Скрипт отработал в консоли:
# sisyphus-mirror -i -c /etc/sisyphus-mirror/sisyphus-mirror.conf
...
sent 159,151,535 bytes  received 459,365,352 bytes  71,024.50 bytes/sec
total size is 76,873,268,158  speedup is 124.29
sisyphus-mirror: Successfuly mirrored p8/branch
sisyphus-mirror: Moving p8/branch from temp dir to main dir.
sisyphus-mirror: All done

У клиента указал в файле/etc/apt/sources.list следующие строки:
# cat /etc/apt/sources.list
# Local package resource list for APT goes here.
# To inspect package defined part, see /etc/apt/sources.list.d/*.list

rpm [p8] ftp://192.168.8.86/ALTLinux p8/branch/x86_64 classic
rpm [p8] ftp://192.168.8.86/ALTLinux p8/branch/x86_64-i586 classic
rpm [p8] ftp://192.168.8.86/ALTLinux p8/branch/noarch classic

Локально в файле /etc/apt/.../.. *.list указал ссылки на каталог с зеркалом:
rpm [p8] file:///var/ftp/ALTLinux p8/branch/x86_64 classic
rpm [p8] file:///var/ftp/ALTLinux p8/branch/x86_64-i586 classic
rpm [p8] file:///var/ftp/ALTLinux p8/branch/noarch classic

Размещение архива согласно конфиг-файлу здесь:
[root@arm1 ~]# ls -l /var/ftp/ALTLinux/p8/branch/
итого 32
drwxr-xr-x 5 502 502 4096 ноя 13  2015 aarch64
drwxr-xr-x 5 502 502 4096 окт  3  2012 armh
drwxr-xr-x 4 502 502 4096 мар 23  2010 doc
drwxr-xr-x 9 502 502 4096 апр  2  2012 files
drwxr-xr-x 5 502 502 4096 июн 28  2012 i586
drwxr-xr-x 4 502 502 4096 дек  9  2007 noarch
drwxr-xr-x 5 502 502 4096 июн 28  2012 x86_64
drwxr-xr-x 4 502 502 4096 апр  2  2012 x86_64-i586
[root@arm1 ~]# du -d 1 -h /var/ftp/ALTLinux/p8/branch/
61M     /var/ftp/ALTLinux/p8/branch/x86_64-i586
273M    /var/ftp/ALTLinux/p8/branch/x86_64
72G     /var/ftp/ALTLinux/p8/branch/files
16K     /var/ftp/ALTLinux/p8/branch/aarch64
362M    /var/ftp/ALTLinux/p8/branch/noarch
16K     /var/ftp/ALTLinux/p8/branch/armh
16K     /var/ftp/ALTLinux/p8/branch/i586
12K     /var/ftp/ALTLinux/p8/branch/doc
72G     /var/ftp/ALTLinux/p8/branch/

Напомню, здесь я делал зеркало только для 64 битных систем AltLinux.
« Последнее редактирование: 25.08.2017 16:39:10 от rabochyITs »

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #24 : 11.12.2017 12:45:40 »
По эксплуатировал  sisyphus-mirror с перечисленными выше настройками. В принципе все работает стабильно, но заметил такую особенность: при переносе зеркала на другой винт под новую систему, параметры  rsync ARGS="-avz --stats --delete-after --progress" при синхронизации затребовали дополнительно столько же места, сколько и сам архив. Вернул, параметры ARGS="-rltmvH --delete-delay --delete-excluded --stats" предложенные разработчиками скрипта, скрипт отработал культурно, без "дисковых" затрат.
Расширил зеркало, включив для него 32 битные системы.
- 64 бит              - ARCH="noarch x86_64 x86_64-i586" - занято 78GB на данный момент.
- 32 бит + 64 бит - ARCH="noarch i586 x86_64 x86_64-i586 x86_32" - занято 110GB на данный момент.
# du -d 1 /mnt/diskdata/ftp/ALTLinux/p8/branch
365M    /mnt/diskdata/ftp/ALTLinux/p8/branch/noarch
109G    /mnt/diskdata/ftp/ALTLinux/p8/branch/files
61M     /mnt/diskdata/ftp/ALTLinux/p8/branch/x86_64-i586
254M    /mnt/diskdata/ftp/ALTLinux/p8/branch/i586
274M    /mnt/diskdata/ftp/ALTLinux/p8/branch/x86_64
110G    /mnt/diskdata/ftp/ALTLinux/p8/branch

Изменил конфиг /etc/sisyphus-mirror/sisyphus-mirror.conf и месторасположение зеркала /mnt/diskdata/ftp/ALTLinux, теперь конфиг выглядит так:

# cat /etc/sisyphus-mirror/sisyphus-mirror.conf
# source mirror
SRCROOT=rsync://rsync.altlinux.org/ALTLinux
#SRCROOT=rsync://mirror.yandex.ru/altlinux
#SRCROOT=rsync://ibiblio.org/Linux/distributions/altlinux
#SRCROOT=rsync://ftp.linux.kiev.ua/ALTLinux

# distination directory
DESTROOT=/mnt/diskdata/ftp/ALTLinux
# example: we can use sisyphus-mirror for synchronize repos to removable media
#DESTROOT=/media/disk/ALTLinux

# repos for sync
LIST="p8/branch"
#LIST="Sisyphus 4.0/branch updates backports people/shrek"

# architectures for sync
ARCH="noarch i586 x86_64 x86_64-i586 x86_32"

# repos for search hardlinks
#LINK_LIST="Sisyphus p7/branch t7/branch"
LINK_LIST="p8/branch"

# speed limit in Kb/s (--bwlimit=)
#SPEED=512
#SPEED=

# other argumets for rsync
# recommended for non-interactive mode:
ARGS="-rltmvH --delete-delay --delete-excluded --stats"
# recommended for interactive mode:
#ARGS="-rltvhmH --progress --delete-delay --delete-excluded --stats"
#ARGS="-avz -x --stats --delete-after --progress"

# if 1, print output to stdout
INTERACTIVE=0

# temp directory for synchronization
TMPDEST=.new

# backup type - READ README.UTF8
#BACKUP_TYPE=one
#BACKUP_TYPE=snapshots

# directory for backups
#BACKUP_DIR=/var/ftp/ALTLinux/previous-state
#BACKUP_DIR=/var/ftp/ALTLinux/archive

# if you do not want to download some packages, use this file
EXCLUDE_FILE=/etc/sisyphus-mirror/exclude

# this file needed when ARCH variable is used
INCLUDE_FILE=/etc/sisyphus-mirror/include

# directory for custom configs and logs
RSHOME="$HOME/.sisyphus-mirror"

# number of tries
#MAXATTEMPTS=10

# rsync protocol timeout (--timeout)
#TMOUT1=500

# pause between attempts
#TMOUT2=15

# http proxy server with HTTP CONNECT (host:port)
#RSYNC_PROXY=localhost:3128

Зеркало раздается ftp сервером ProFTPd.
Конфиг сервера ProFTPd, /etc/proftpd.conf выглядит так:
# cat /etc/proftpd.conf
ServerName                      "ProFTPD AEHV"
ServerType                      standalone
DefaultServer                   on

AuthOrder                       mod_auth_pam.c* mod_auth_unix.c mod_auth_file.c

# если не выключить эти две опции, то фтп при подключении будет сильно тормозить
IdentLookups                    off
UseReverseDNS                   off

# порт подключения
Port                            21

# протокол IPv6 on/off
UseIPv6                         off
Umask                           022
ListOptions                     "-a"

# максимальное число одновременно запускаемых процессов / только в режиме standalone /inetd - один процесс
MaxInstances                    30

# пользователь и группа под которыми работает процесс ftp сервера
User                            nobody
Group                           nobody

#"закрывает" каждого пользователя в его домашнем каталоге
# и не дает подняться на уровень выше
DefaultRoot             ~

# запрещаем root логин на сервер
RootLogin           off

# разрешить перезаписывать существующие файлы
AllowOverwrite          on
DenyFilter \*.*/

# запрещаем использования SITE CHMOD
<Limit SITE_CHMOD>
     DenyAll
</Limit>

<IfModule mod_lang.c>
    #LangDefault ru_RU
    LangDefault en_US
    LangEngine on
    #UseEncoding local_charset client_charset
# подружить ftp с windows
    UseEncoding UTF8 CP1251

    # or for 'opts utf8 on' support:
    #UseEncoding on|off
</IfModule>

# докачка файлов на сервер
AllowStoreRestart              on

# Учетные данные пользователей с файла созданные c помощью ftppasswd
# при активации анонимный доступ не возможен
# для испльзования подключить модуль mod_auth_file.c
#AuthUserFile    /etc/proftpd/ftpd.passwd

# Логи системные (запуск/ошибки) и транспортные (копирование/удаление)
SystemLog               /var/log/proftpd/err.log
TransferLog             /var/log/proftpd/transfer.log


<Anonymous /mnt/diskdata/ftp>
  User                          ftp
  Group                 ftp

  # рассматривать клиентов, вошедших под логином anonymous как ftp
  UserAlias                     anonymous ftp

  # лимит на максимальное количество подключений пользователя anonymous
  MaxClients                    30

  # не спрашивать оболочку
  RequireValidShell             off
  # Запрашивать ли пароль для анонимного подключения
  AnonRequirePassword           off

  # Запретить перезапись файлов для анонимус окружения
  # даже если выше перезапись разрешалась
  #AllowOverwrite off

  # ограничение ЗАПИСИ(WRITE) везде в anonymous chroot
  <Limit WRITE>
    Order Deny, Allow
    DenyAll
  </Limit>

    <Directory ALTLinux/*>
#       <Limit READ>
#           DenyAll
#       </Limit>
        <Limit READ>
            AllowAll
        </Limit>
    </Directory>
</Anonymous>

Для запуска proftpd необходимо, добавить строчку (ip - hostname) в файл /etc/hosts
127.0.0.1 имя_сервера
[root@server-ftp ~]# hostname
server-ftp.localdomain
[root@server-ftp ~]# echo "127.0.0.1 server-ftp.localdomain" >> /etc/hosts
[root@server-ftp ~]# cat /etc/hosts
127.0.0.1       localhost.localdomain localhost
127.0.0.1 server-ftp.localdomain
Не знаю для чего это dns сопоставление, но без этого proftpd не работает.

Данное описание работает для startkit server p8 (sysvinit). На systemd не работает (по крайне мере я не смог запустить) proftpd. Пишу данное руководство для себя, может кому пригодиться тоже.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: Sisyphus-mirror (локальное зеркало)
« Ответ #25 : 31.12.2019 17:28:59 »
Сегодня закончил зеркалирование ветки p9 (32 и 64) и для памятки добавлю комментарий.
Конфиг для sisyphus-mirror
# sed '/^#\|^$\| *#/d'  /etc/sisyphus-mirror/sisyphus-mirror.conf
SRCROOT=rsync://rsync.altlinux.org/ALTLinux
DESTROOT=/mnt/disk/AltLinux
LIST="p9/branch"
ARCH="noarch i586 x86_64 x86_64-i586 x86_32"
LINK_LIST="p9/branch"
ARGS="-rltmvH --delete-delay --delete-excluded --stats"
INTERACTIVE=0
TMPDEST=.new
EXCLUDE_FILE=/etc/sisyphus-mirror/exclude
INCLUDE_FILE=/etc/sisyphus-mirror/include
RSHOME="$HOME/.sisyphus-mirror"

Размер зеркала:
# du -h -d 0 /mnt/disk/AltLinux
127G /mnt/disk/AltLinux
Для ветки P9 и P8 диска 320 ГБ хватит.