Štítekstěhování9

Stavba archivu

Steven D. Brewer bloguje od roku 2002: PHPWiki, pak Drupal, pak WordPress. Když Drupal 7 došel na konec životnosti, hledal pro čtyřiadvacet let příspěvků místo, které nebude vyžadovat údržbu, a dal je na blog.sh: archive.bierfaristo.com, kde už jsou příspěvky z Drupalu i feed z Twitteru a kousky starého blogu Esperanto-USA vytažené z Wayback Machine.

Stojí za přečtení, pokud hledáš archiv, který má přežít software, ve kterém vznikl.

#blogsh #archive #drupal

Jak jsem si na sdíleném hostingu nastavil blog.sh

Pavel přestěhoval WordPressový blog ze sdíleného hostingu na blog.sh, a to přes obyčejné FTP. Postup popisuje krok za krokem: export WXR, import, rclone, zkušební běh, nasazení.

Stojí za přečtení, pokud tvůj web běží na hostingu, který nabízí FTP a nic víc.

#blogsh #wordpress #staticsite

Příspěvky, které nikdo publikovat nechtěl

Nejhorší selhání importéru není ztráta příspěvku. Je to jeho publikování.

1.5 prošla všech jedenáct importních adaptérů a mechaniku pod nimi a hledala přesně tohle – a našla to třikrát, ve třech různých souborech, pokaždé vzniklé stejně.

Archiv je celý účet

Export z Mastodonu není tvoje veřejná časová osa. Outbox drží vedle veřejných příspěvků i ty jen pro sledující a přímé zprávy – a každý samostatný toot v něm se zapisoval jako publikovaný. Na archivu, na kterém se to měřilo, je to 141 příspěvků z 2 548, z nichž 132 jsou přímé zprávy, každá s vlastní stránkou, vlastní položkou v sitemapě a vlastní položkou ve feedu. V souhrnu běhu o tom nebylo ani slovo.

Rozsah viditelnosti byl v exportu celou dobu, přesně tam, kam ho ActivityPub dává. Public v to je veřejný. Public v cc je mimo výpisy – skutečná adresa, ale ne ve výpisech. Jen pro sledující a přímé se stávají koncepty: to nechá autorova slova v archivu a mimo web, což je jediné čtení „není veřejné", které nemůže nic publikovat omylem.

Číst dál

Moje fixtury se mnou souhlasily

Importéry měly dobrou sadu testů. Každý zdroj měl fixtury, fixtury se rozebraly, výsledky se ověřily a všechno procházelo.

Pak jsem importéry pustil přes tři archivy, které jsem nevytvořil já: export z Ghostu se 118 příspěvky a 419 obrázky, strom Huga se 77 soubory a WordPress WXR se 194 položkami. Vedle nich čtvrtý, který je celý můj – vlastní export tohoto enginu, načtený rovnou zpět – protože ten se neptá, jestli kód přežije cizího člověka, ale jestli se obě půlky cesty tam a zpět pořád shodují.

Ty tři cizí ale byly pointa. Fixtury s kódem souhlasily, protože oba jejich konce jsou moje.

Obrázek, který nikdo nestáhl neúspěšně

{{< figure >}} je způsob, jakým Hugo zapisuje obrázek, a odstraňovač Liquidu ho snědl jako značku Liquidu. Oba, které v tom archivu byly, mířily na soubory ležící hned vedle článku v jeho svazku stránky: nic ke stažení, nic, co by mohlo selhat, a byly pryč bez řádku v souhrnu – protože je nikdo nezkusil stáhnout, a tak nikdo neselhal.

To je tvar každého nálezu v tomhle průchodu. Ne pády. Ticho.

Číst dál

Import jen a pouze přidává

Nový import archivu býval věc, kterou jsi dělal opatrně, v noci, po záloze. Běh šel a stáhl každý obrázek znovu – obrázky, které archiv už držel, bajt po bajtu – a každé z těch stažení dopadlo na soubor, který už byl správně.

To je opraveno a oprava je jedna věta: identita souboru médií je adresa, ze které přišel.

Archiv už to ví

Každá položka médií si zapisuje svůj src. Nový import porovná, co zdroj nabízí, s tím, co archiv drží, a stáhne jen to, co chybí. Nad úplným archivem to není vůbec nic – druhý běh téhož importu nestáhne jediný obrázek a v souhrnu to řekne.

Zdroj sám se pořád čte, a to je poctivá hranice toho tvrzení: export ležící na tvém disku nestojí nic, zatímco feed nebo API se stahuje pokaždé, protože jinak nejde zjistit, jestli se něco změnilo.

Tady je skutečný import z Ghostu spuštěný podruhé nad archivem, který ho už drží:

Číst dál

Většina tvého Facebooku není tvoje

Importér z Facebooku vznikl nad skutečným exportem „Stáhnout své informace". První užitečná věc, kterou mi řekl, bylo číslo, které jsem nečekal.

Na tom exportu nebylo 95 % příspěvků napsáno na Facebooku. Byly tam zrcadleny – z Twitteru, z Posterousu, z celé éry crosspostů, kdy každá služba zdvořile nabízela, že tě přepošle všude jinde.

Přeskakují se a počítají

Tyhle příspěvky se neimportují. Ne proto, že by byly bezcenné, ale protože platformy, ze kterých skutečně pocházejí, mají vlastní exporty a ty nesou originály: plný text, skutečné časy, média ve velikosti, v jaké byla nahrána. Facebookové zrcadlo tweetu je horší kopie něčeho, co můžeš pořádně naimportovat z archivu Twitteru ležícího v téže složce.

Naimportuj obojí a tvůj archiv se zdvojnásobí, přičemž horší verze vyhraje v polovině případů. Takže se rozpoznají a přeskočí s počtem v souhrnu, a FACEBOOK_CROSSPOSTS=1 to přebije, když nesouhlasíš. Check-iny beze slov a příběhy z aplikací jsou také počítané přeskoky.

Zbývají tvoje vlastní příspěvky, s fotkami a videi z archivu samotného.

Číst dál

Záchrana blogu, který zemřel v roce 2013

Každý importér tady čte exportní soubor. To funguje přesně do chvíle, kdy platforma zmizí – a pak není o jaký export žádat, kam se přihlásit ani jaký účet obnovit. Posterous skončil v roce 2013. Blog.cz je pryč. Tvůj hosting je na řadě, časem.

Pro tyhle blogy je dvacátým zdrojem importu Internet Archive.

Režim feedu: co si crawler nechal

Archiv udělal užitečnou věc, aniž to zamýšlel. Léta procházel RSS feedy blogů – znovu a znovu, každých pár týdnů, kdykoli šel crawler kolem. Každý záchyt je snímek posledních deseti nebo dvaceti příspěvků v tu chvíli. Seřaď je od nejstaršího a překryvy zrekonstruují historii, kterou nikdo neuložil.

To dělá importér: přečte index CDX pro adresu feedu, odstraní duplicity podle digestu, aby sto shodných záchytů stálo jedno stažení, vytáhne původní bajty přes koncový bod id_, aby ti do příspěvků nikdy nepřistála vlastní lišta Archivu, a překrývající se okna sloučí stejně, jako nový import slučuje cokoli jiného.

Obrázky se vracejí týmž strojem času.

Číst dál

Blogovací engine, ze kterého se stal archiv

První příspěvek na tomto webu je o fotce, kterou jsem v roce 2012 dal na Instagram. Odkaz pořád funguje. Fotka ne.

Ten příspěvek byl o jednom archivu – mém – a o jednom pravidle: média se vracejí domů. Tenhle je o tom, co se stalo, když se to pravidlo použilo na každou platformu, ke které jsem našel export.

Seznam je uzavřený

Importuje se teď dvaadvacet zdrojů, ve třech skupinách.

Sociální sítě: Bluesky, Facebook, Instagram, Mastodon, Pixelfed, Threads, Twitter/X.

Blogy a publikační platformy: beehiiv, Blogger, Ghost, Jekyll/Hugo a jakákoli složka s markdownem, LiveJournal, Medium, Movable Type a TypePad, podcasty (jakýkoli feed se zvukem), Squarespace, Substack, Tumblr, Wix, WordPress a jakýkoli feed RSS nebo Atom.

A mrtvé weby: Wayback Machine, pro blogy, jejichž platforma už vůbec neexistuje.

Číst dál

Čtrnáct let a každý obrázek se vrátil domů

Chybová stránka prohlížeče s hláškou, že IP adresu serveru distilleryimage1.instagram.com se nepodařilo najít
distilleryimage1.instagram.com, o čtrnáct let později

V roce 2012 jsem dal fotku na Instagram. Odkaz pořád funguje. Fotka ne.

Číst dál