Appleblog.cz

Appleblog.cz

Nov 9 / 1:21pm

Resource fork v Mac OS X aneb Proč je ten soubor prázdný když v něm vidím data?!

Kolega pracující v MS Windows obdržel od klienta data v sitx archívu. Po rozbalení archívu s hrůzou zjistil, že adresář Fonts/ obsahuje pouze soubory nulové velikosti. Nainstaloval jsem Stuffit Expander a zkusil rozbalit archív na Macu. Soubory s fonty se zobrazily správně. Zkusil jsem fonty zabalit pomocí BetterZipu a otevřít pod Windows. To samé. Pořád nulová velikost. Na Macu byly fonty vidět, ve Windows nikoli. Napadlo mě, vypsat obsah adresáře v Terminálu. Jaké bylo moje zděšení, když příkaz ls -al vypsal u všech fontů nulovou velikost.

Začal jsem pátrat po původu této macovské zákeřnosti a zjistil jsem, že za vše může rozdělení dat souboru na tzv. resource fork a data fork. Asi každý uživatel Macu zaznamenal, že při zkopírování dat na FAT32 nebo SMB svazek se na tomto svazku vytvoří hromada skrytých souborů začínající tečkou. Ke každému "normálnímu" souboru jeden soubor začínající "._". V těchto souborech jsou uloženy metadata jako ikona souboru, nastavení kterým programem jej otvírat atd. Metadata se odborně nazývají resource fork. Přímo na Macu nejsou vůbec vidět a pouze se starají o správnou interpretaci samotného souboru, tedy data forku. Součástí metadat v resource forku ale mohou být i poměrně obsáhlé struktury - obrázky, zvuky, jazykové překlady a dokonce i fonty. Tím se vysvětlila záhada s nulovými soubory - operační systém, který neumí pracovat s resource forky viděl pouze prázdné data forky - soubory s nulovou velikostí. Fonty jsme převedli do standardního True type formátu a vše již funguje jak má.

Terminál pracuje na nižší úrovni než aplikace v grafickém prostředí Macu, vidí proto pouze data fork. Pro zobrazení resource forku stačí za název souboru doplnit "/..namedfork/rsrc". Pomocí příkazové řádky a příkazu cp lze překopírovat soubory bez resource forku.

Terminal_resfork

Velice podrobné informace o resource forku nabízí Wikipedie.