rsync и архивный репозиторий https://archive.archlinux.org/repos/ , альтернативы какие

Документация от авторов с примерами https://rsync.samba.org/documentation.html

Проблема в том, что
1. на rsync archive.archlinux.org::archive пишет ошибку "доступ запрещён"
Из всего последующего исследования сделал вывод, что серверная часть настроена криво.
С другими rsync серверами такого нет.
2. rsync пытается найти каталог с именем хоста, хотя я такое не указывал в своих опциях.
получаю сообщение что /home/user/папка/archive.archlinux.org/repos/ ..... не существует.
я такое как rsync хочет сделать нигде не указывал.
в man я такую опцию не видел, чтобы её вкл или выкл.

{UPDATE} {UPDATE}
Что Требуется
нужно скачать содержимое папки файлы, обращая внимание на тхт файл с исключениями.
чтобы папки в назначении были созданы до синхронизации самих файлов.
я хочу простой короткий путь в домашней папке без имени сервера и папка в папке папки.

ОПИСАНИЕ ситуации
С яндексом синхронизация получается если папки home/user/mirror/{core,extra,community}/os/X86+64/ были созданы ранее руками и rsync качает прямо в них.
с http://arch.jensgutermuth.de/ не получается.
а с https://archive.archlinux.org/repos/папка/папка/папка в папке/ не получается.
то ошибка с путями, то требует авторизацию и жалуется на ошибку конфигурации ssh.
Мне этот ssh зачем ?
если папка home/user/mirror пуста, то rsync пытается качать в /home/user/mirror/mirror.yandex.ru/папка/папка/папка в папке/ .
оба *.Sh файла у меня различаются только источником и назначением. написаны одинаковой грамматикой и пунктуацией

ВОТ ЧТО Я ДЕЛАЛ И КАК
по ссылке все файлы которые и какие использую
опции relative , mkdir добавлял --- толку ноль.
./mirror-exclude.txt лежит в папке со скриптом.
а скрипт лежит в /home/user/
зеркалю в /home/user/mirror/{core,extra,multilib, community, pool}/os/X86+64/ , /home/user/mirror/pool , /home/user/mirror/pool/iso/дата/
по конкретной дате.
Для удобства проверки я предоставил sh который создает нужные папки командой mkdir
ман и гугло поиск не помогли.

КАК ПОБЕДИТЬ ?
пожалуйста прошу помочь увидеть где я накосячил или как сделать это всё иначе

UPD 2020-12-30
возможно опция -r лишняя или это ошибка в rsync с этой опцией вот такая:
так как если /a~-- это каталог, то cp -r /a /b скопирует /a в /b/a и /a/x в /b/a/x в случае, если /b уже существует, но эта же команда будет копировать /a в /b и /a/x to /b/x, если /b не существует, или же завершится с ошибкой, если /b~-- обычный файл).

Вот у меня именно так и происходит. Я понял это посмотрев https://archlinux.org.ru/forum/topic/14140/ и man cp
С уважением, .
Bendalf
нужно скачать только сами папки без файлов
googl поможет - учись гуглить.
Ошибки не исчезают с опытом - они просто умнеют
Боюсь, перевод не вполне корректный. В несоздании директориев на стороне назначения rsync ранее не замечен. А отсылка погуглить в обстоятельствах засранности сео-оптимизаторами любой поисковой выдачи увы, дедовский метод (выбешивает типа "в данной супер-статье с картинками, свистелками и рекламой, мы вам ... (100-1000000 строк) расскажем о команде ls).

Относительно слэша так - предположу, что в редакции описанной строки он попытался все положить в /home/mirror/mirror.yandex.ru::archlinux, рекурсивно. Пути же, если они не прописаны от корня, он пробует от директория, в котором запущена команда. А в Вашей строке с точки зрения задания путей имеется разносортица - путь то полный, то от неуказанного места. Думаю, что если не задавать переменные, а записать полную строку и ее пробовать в консоли (да из разных мест), то успех настигнется быстрее.
wau
А отсылка погуглить в обстоятельствах засранности сео-оптимизаторами любой поисковой выдачи увы, дедовский метод (выбешивает типа "в данной супер-статье с картинками, свистелками и рекламой, мы вам … (100-1000000 строк) расскажем о команде ls).
Не согласен, просто нужен правильный запрос. Не поленился, загуглил - на 1-ой же странице 3 ссылки ..1... , ..2.. , ..3..
Команд много, но более подходящая для rsync, это
rsync -a -f"+ */" -f"- *" "$source" "$target"
или то же самое, но используя другой параметр
rsync -a --include '*/' --exclude '*' "$source" "$target"

PS 1 - но, думаю, Bendalf как всегда не верно задал вопрос ... но что спросил только сами папки без файлов, то и получил ...
Ошибки не исчезают с опытом - они просто умнеют
wau
Относительно слэша так - предположу, что в редакции описанной строки он попытался все положить в /home/mirror/mirror.yandex.ru::archlinux, рекурсивно.
проскакивало что нет такой папки /home/mirror/mirror.yandex.ru::archlinux
я не понимаю откуда оно взялось, я то хотел в /home/mirror/ качать
- это основное, почему я написал свой вопрос

wau
путей имеется разносортица - путь то полный, то от неуказанного места.
пожалуйста прошу обьясните нубу

нужны не все папки, а с учетом исключений прописанных в отдельном тхт файле

vasek
просто нужен правильный запрос
у меня английский язык не родной. я спрашивал по русски.

спасибо за подсказки
С уважением, .
Наврное лучше не примере.


alias rezerv_srv="rsync -a --progress --stats  -e='ssh -p номер_порта_удаленного_сервера' --force --ignore-errors  --delete-after --delete-excluded  /home/директорийДДД имя_юзера_на_удаленном_сервере_назначения@адрес_сервера_назначения:/путь/на_удаленном/сервере/ --exclude='Загрузки/Фильмы' --exclude='Загрузки/Телефон/TitaniumBackup' --exclude='.local/share/Trash' --exclude='*.tmp'  --exclude='*.ldb'  --exclude='yaourt-tmp' --exclude='.cache'  --exclude='*.vdi' --backup --backup-dir=/путь/на_сервере/назначения/куда_будут_складываться_устаревшие_версии_файлов_с_меткой_даты/`d    ate +%Y-%m-%d`/"

Это пример моего алиаса в .bashrc. Он берет на моей локальной машине все из /home/директорийДДД (нет слэша на конце, т.е. включая все-все, и скрытые файлы тоже) и идет на адрес_сервера_назначения, на котором в /путь/на_удаленном/сервере/ (слэш на конце) он создаст (при отсутствии) все необходимые директории. Т.е. в /путь/на_удаленном/сервере/ появится директорий директорийДДД, будет /путь/на_удаленном/сервере/директорийДДД/все_залитое. Заданные явно пути исключения будут анализироваться относительно директория источника, по первому вхождению (совпадению) слева направо, т.е. задан источник /home/директорийДДД и согласно инструкции --exclude='Загрузки/Телефон/TitaniumBackup' будет пропущен директрий /home/директорийДДД/Загрузки/Телефон/TitaniumBackup. Если задать только TitaniumBackup - исключение будет обработано неправильно.

Исключение *.ldb = артефакт из начала 2000х, когда я еще использовал акссесс через вайн.
Уточнение в части слэш
1. Слэш на на target не действует (его наличие/отсутствие не влияет на результат)
2. Наличие/отсутствие конечного слэш в source изменяет уровень вложенности (на единицу) , точнее,
- без слэша source будет скопирован полностью, включая и директорию с именем source
- при наличии слэш будет скопировано только содержание директории source, то есть директории с именем source не будет.

Как правило, при backup копирование идет один в один и слэши лучше не ставить, чтобы не путаться.

PS - а вообще, для наглядности, лучше провести эксперимент
Ошибки не исчезают с опытом - они просто умнеют
vasek
rsync -a –include '*/' –exclude '*' "$source" "$target"
Спасибо. Это скачивает все папки без файлов. Нужно исключить папки , которые не нужны добавив --exclude-from="blabla.txt"

Я так сделал и rsync файл нашёл, но на содержимое не обратил внимания.
к примеру в blabla.txt было
- /archserver
- /archserver/*/
- /iso/2020.0?.??/*.*
- /iso/2020.0?.??/*/
- /iso/2020.0?.??/*/*/*
Но лишние папки в назначении всё равно были созданы. а если убрать --exclude '*' , то rsync качает и файлы. очень любит кучу iso за последние пару лет.
Что интересно, первые 14 строк из blabla.txt ок, удаляет лишние папки, а дальше никак, хотя они по образцу такие же
С уважением, .
Bendalf
Нужно исключить папки , которые не нужны … Что я только ни делал, всё без толку.
Предлагаю более понятный способ: подключить расширенные функции bash, используя которые исключим, например, все директории, начинающиеся на N
shopt -s extglob
rsync -a -f"+ */" -f"- *" /souce/!(N*) /target
или осваивай --exclude ….
Ошибки не исчезают с опытом - они просто умнеют
vasek
или осваивай –exclude ….
я попозжа выложу простыню

rsync почему то складывает "$source" "$target" в одну строку и потом жалуется что такого пути "$target"+"$source" нет. это баг-фича или мой косяк ?
я пробовал без переменных явным образом указывать - такая же ерунда получается.
причем когда , то все норм пашет а через некоторое время, стоит только поменять сервер на
https://archive.archlinux.org/repos/2020/08/04/
source=archive.archlinux.org:/repos/2020/08/04/
уже не работает. жалуется на "$target"+"$source" не существует. пробел есть. что нужно, не представляю.

наличие кавычек возле "$target"+"$source" не влияет . хоть двойные хоть одинарные. если папки уже созданы всё робит четко.
файлы синхронизируются с яндекса или http://mirror.pkgbuild.com/

wau
Наврное лучше не примере.
почему rsync соединяет $source" "$target" в один путь локальный и потом трындитт что такого пути нет ?
наличие отсутствие кавычек вообще никак не влияет.

если так
src=mirror.yandex.ru::archlinux
not="./mirror-exclude.txt"
rsync -alvrzth --progress --delete --delete-after --delete-excluded --inplace --partial --exclude-from=$not $src/core/os/x86_64/ /home/oper/mirror/core/os/x86_64/
то папки приходится создавать руками.

а если так
src=[https//:]arch.jensgutermuth.de[тут что угодно] или src=arch.jensgutermuth.de[тут что угодно]
либо не соединяет либо делает таргет с источником в один локальный путь и потом "такого пути нет"
С уважением, .
 
Зарегистрироваться или войдите чтобы оставить сообщение.