Цифровой садик - приветственная

Цифровой садик - приветственная | Полный список всего, что тут есть | RSS | Подписаться через follow.it

17.06.2025

metalink

Собственно, metalink4.

открытый формат файлов на основе XML, предназначенный для описания ссылок на файлы для загрузки по протоколам HTTP, FTP, bittorrent и т. п.

Несколько адресов (FTP, HTTP, P2P), по которым расположен один и тот же файл для закачки, размещаются в одном метафайле с расширением .metalink. Использование файла подобного формата позволяет, с одной стороны, увеличить надёжность в случаях, когда файл по части адресов будет недоступен, с другой — для компьютеров с высокоскоростным подключением к сети — увеличить интенсивность процесса скачивания посредством закачки сегментов файла одновременно из разных источников (сегментированная закачка).

Помимо этого, формат помогает реализовать автоматическую проверку загруженных файлов по контрольным суммам, автоматическое восстановление поврежденных файлов, одновременное добавление в очередь закачки нескольких файлов (путем их перечисления в метафайле), автоматический выбор наиболее подходящих для конкретной операционной системы и языка файлов.

Формат Metalink расширяем, и позволяет включать несколько частичных и полных хешей, контрольных сумм и PGP-ключей. Однако, большинство клиентов поддерживают проверку только по контрольным суммам MD5, SHA-1 и SHA-256. Помимо хранения адресов FTP-, HTTP-зеркал и rsync, поддерживается включение P2P-ссылок — bittorrent, ed2k и magnet.

Из того, что у меня есть, это понимает aria2 и wget. У aria2 прям много.

Wget, как минимум:

–input-metalink=file
Downloads files covered in local Metalink file. Metalink version 3 and 4 are supported.

–metalink-over-http
Issues HTTP HEAD request instead of GET and extracts Metalink metadata from response headers. Then it switches to Metalink download. If no valid Metalink metadata is found, it falls back to ordinary HTTP download. Enables Content-Type: application/metalink4+xml files download/processing.

https://curl.se/docs/manpage.html – к сожалению, curl отключил поддержку:

–metalink

This option was previously used to specify a Metalink resource. Metalink support is disabled in curl for security reasons (added in 7.78.0).

If –metalink is provided several times, the last set value is used.

Example:

curl --metalink file https://example.com


Очень интересный комментарий от Сергея Матвеева

Тоже когда-то узнал про этот формат из документации к aria2.

Вообще софта немало его поддерживает:
https://www.metalinker.org/implementation.html
GNU Wget2 заимел поддержку например.

На самом деле он может использоваться и прозрачно без нашего явного ведома. Когда мы просто запрашиваем файл по HTTP, то среди заголовков ответа могут подсовываться ссылки на .meta4 файлы, из которых download клиент может узнавать про зеркала или BitTorrent и распараллелить скачивание. Ну и целостность проверить. Aria2, Wget2 это точно всё прозрачно умели делать.

https://datatracker.ietf.org/doc/html/rfc6249

Не раз видел как CDN-ы раздающие пакеты для GNU/Linux дистрибутивов TODO

Мне формат понравился и например при создании релизов софта. В почтовую рассылку же обычно кидаем письмо с ссылками и контрольными суммами. А так достаточно прикрепить .meta4 файл, где всё это будет, плюс возможно прикреплённые *PGP/OpenSSH подписи, плюс зеркала. А web-сервер, в свою очередь, может и рядом лежащий .meta4 для файла найти, распарсить и в HTTP заголовки подсунуть массу информации из него. Например если просто сделать HEAD запрос на скачивание tarball одного из моего проектов.

% curl -I http://www.vors.stargrave.org/download/vors-3.1.0.tar.zst
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 7373425
Content-Type: application/zstd
Digest: BLAKE3-256=ss4IaLgfk9n4c7woxhvgm8ud7gTlWnFpOONfLbRix+M=
Digest: BLAKE2b-512=J9aeohxwqVTJryusQBKoOrkE38dvc9jtOpsMWxUzgt14qoUTqPyIAkMw4dZ1lTcp80uzawyl+KKGx2p01awd2w==
Digest: BLAKE2b-256=UtaN7ng78SEOj/9WZDgT9sn+qkcodYkB8F5xpso8wis=
Digest: Skein-512=1v0InHb1TieM/SkVUhxypzh/RjJMS8QVbUQ/FHefiwG7bqDTd8DJNF/R7BXDd3dlYcOdZWiXCmb40S9+o7XkLQ==
Digest: SHAKE256=3Ag8ya/88SbO+wfZtNHA9QIy9lev4zEMNv6C13pbRNz1obGtYqyV8LLhiZVZoNQgn02QANUxPk/xEEmbvPqN4A==
Digest: SHA-512=AG7T8U7xQEfPh7H8iWa+f9Zt6hvGI9j37MnIV27DzHMHn77IWsUSOk9/qAddsCPHS/l1LLrltpxAIH+VGD2log==
Digest: SHA-256=ZRQI96j0n00eh1qxO8NgJeOQPU9bfzHoHa45xQNuzv8=
Digest: Streebog-256=j8WFZ70EwTpRXWYKd35NMGPGNgtESEbCCQivGCuWZuY=
Digest: SHAKE128=onxzKeFkBXkrGZMiDQxcef4ApD8qy+8ROAnbqlmmaQY=
Digest: Streebog-512=hn4tjq22oPFGwATCDG9n1qMuM92XdA/VxTP0IaYYVeNWgjpxIZCe9elJBXgpQvWW5ZbyBikSQX8FQNefmBEdBA==
Digest: XXH3-128=bSelLzD9g7e3R4vqpNZhYA==
Etag: "AAAAAABwgnEAAAAAZkR9_gAAAAAAAAAA"
Last-Modified: Wed, 15 May 2024 09:18:54 GMT
Link: <vors-3.1.0.tar.zst.meta4>; rel=describedby; type="application/metalink4+xml"
Link: <http://www.vors.stargrave.org/download/vors-3.1.0.tar.zst>; rel=duplicate
Link: <http://y.www.vors.stargrave.org/download/vors-3.1.0.tar.zst>; rel=duplicate
Server: godlighty/0.9.0
Date: Wed, 28 May 2025 08:12:42 GMT

Причём всякие SHA-* хэши из заголовков wget2/aria2 (вроде оба умели, точно не вспомню) умели проверять после скачивания файла. А благодаря Link: … type="application/metalink4+xml", он они могут (и делают!) скачать .meta4 и из него взять информацию, в том числе про BitTorrent. OpenStreetMap базы данных у них тоже через BitTorrent+Metalink4 распространяются.

Не нужно иметь .sha512.txt-like файлы, файлы с подписями и всякое такое: достаточно в одну XML-ку .meta4 сгруппировать. Даже не имея Metalink-aware софта под рукой, XML человек может прочитать и хотя бы URL-ы выцепить.

У меня есть собственная система сборки пакетов. И вот в ней надо бы как-то предоставлять ссылки для скачивания исходного кода программ, плюс проверять целостность, плюс указывать разные зеркала. Идеально .meta4 подходит для этого, плюс удобен за счёт одного XML файла.

Реально хорошая идея этот .meta4, хоть и не распространён настолько хорошо как хотелось бы.


Если у вас есть мысли, комментарии, предложения или отклики по поводу этой страницы или этого цифрового сада в целом, напишите мне сообщение на me (at) ladykosha.ru. Мне ооочень интересно!

Задонатить.


An IndieWeb Webring 🕸💍