cpio

cpio
Typ softwarurodina souborových formátů, Archivační program a příkaz
Některá data mohou pocházet z datové položky.

cpio je archivační program a formát souboru dostupný primárně na unixových systémech. Program byl původně vytvořen pro zálohování na magnetickou pásku jako součást balíku Programmer's Workbench (PWB/UNIX), a od té doby je součástí většiny distribucí operačního systému Unix. Jméno vychází z copy in and out, které popisuje použití standardního vstupu a výstupu tímto programem.

Známějším archivačním programem v unixovovém prostředí je program tar. Formát cpio se stal důležitým díky svému použití v balíčkovacím systému RPM, programu initramfs v linuxových jádrech od verze 2.6 a instalačnímu programu pax na počítačích Apple.

Od počátečního návrhu prošel program a formát cpio několika významnými změnami (z nichž některé vedly k porušení zpětné kompatibility). Nejvýznamnější změnou byl přechod od binárního formátu meta informací o souborech na textový formát. Na použití původního formátu lze přepnout pomocí parametru.

Historie

Program cpio se poprvé objevil ve Version 7 Unix v Programmer's Workbench (PWB/UNIX).

Funkce a formát archivu

Program cpio byl navržen pro zálohování na magnetickou pásku, kam se archiv zapisuje jako jeden souvislý sekvenční soubor. Program cpio sám neprovádí žádnou komprimaci obsahu, ale vytvářené archivy lze komprimovat externím komprimačním programem (např. programem gzip).

Vytváření archivu

Při použití parametru -o (copy-out) cpio čte seznam jmen souborů a adresářů ze standardního vstupu a výsledný archiv zapisuje na standardní výstup. Cpio se proto obvykle používá s programy, které vytvářejí seznam souborů, které mají být archivovány, například s příkazem find.

Výsledný archiv je posloupnost souborů a adresářů spojených do jediného souboru, kterému se obvykle dává přípona .cpio. Soubor obsahuje hlavičky s metainformacemi o souborech, jako jméno souboru, číslo inode, vlastnictví, oprávnění a časová razítka.

Následující příkaz používá program find pro vytvoření seznamu jmen souborů s cestou začínající v aktuálním adresáři pro vytvoření archivu stromu adresářů:

$ find . -depth -print | cpio -o > /path/archive.cpio

Rozbalování archivu

Při použití parametru -i (copy-in) načítá cpio archiv ze standardního vstupu a soubory v něm uložené zapisuje do systému souborů operačního systému.

$ cpio -i -vd < archiv.cpio

Volba -d udává, že cpio má vytvářet potřebné adresáře. Volba -v vypisuje jména rozbalovaných souborů.

Všechny argumenty zadané na příkazovém řádku kromě voleb slouží jako žolíkové zápisy jmen souborů; cpio vybalí z archivu pouze soubory, jejichž jména vyhovují zadaným zápisům. Následující příklad vybalí z archivu pouze soubor etc/fstab:

$ cpio -i -d etc/fstab < archive.cpio

Výpis obsahu archivu

Při použití parametru -t vypíše cpio soubory obsažené v archivu:

$ cpio -i -t < archiv.cpio

Je vhodné si vypsat obsah archivu před jeho rozbalením, protože archiv může obsahovat absolutní cesty (například /bin/ls místo bin/ls).

Kopírování souborů

Při použití volby -p (pass) bude cpio kopírovat soubory. Tento režim kombinuje operace copy-out a copy-in a nevytváří archiv. Stejně jako při operaci copy-out čte cpio v tomto režimu cesty ze standardního vstupu, ale místo vytváření archivu vytváří adresáře a soubory v jiném místě systému souborů, které je zadané parametrem.

Následující příklad zkopíruje adresářový strom s kořenem v aktuálním adresáři do adresáře cíl v systému souborů, přičemž zachovává práva souborů (-m), vytváří potřebné adresáře (-d), přepisuje existující soubory bez dotazu (-u) a vypisuje informace na standardní výstup (-v):

$ find . -depth -print | cpio -p -dumv cíl

POSIX standardizace

Program cpio byl standardizovaný v POSIX.1-1988, ale není obsažen v POSIX.1-2001, mimo jiné kvůli svému omezení velikosti výsledného souboru. GNU verze nabízí různé volby výstupního formátu, jako bin (implicitní a zastaralé) a ustar, které mají omezení velikosti souboru na 2 GB, resp. 8 GB.[1]

Formáty souborů cpio, ustar a pax jsou definovány ve standardu POSIX.1-2001 pro program pax, který je v současnosti kompatibilní s POSIX 1003.1-2008, a proto může číst i vytvářet archívy ve formátech cpio a ustar.

Implementace

Většina linuxových distribucí obsahuje GNU verzi programu cpio[2]. FreeBSD a macOS používá cpio poskytnutý s libarchive s licencí BSD.[3]

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Cpio na anglické Wikipedii.

  1. Viz info dokument cpio, uzel Options. Další omezení popisuje manuálová stránka bsdcpio.
  2. Cpio [online]. gnu.org. Dostupné online. 
  3. libarchive [online]. Dostupné online. 

Související články

  • Seznam unixových utilit
  • Seznam archivačních formátů

Externí odkazy