cpio
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.
Typ softwaru | formát souboru, Archivační program a příkaz |
---|---|
Některá data mohou pocházet z datové položky. |
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]
Související články
- Seznam unixových utilit
- Seznam archivačních formátů
Reference
V tomto článku byl použit překlad textu z článku Cpio na anglické Wikipedii.
- Viz info dokument cpio, uzel Options. Další omezení popisuje manuálová stránka bsdcpio.
- Cpio [online]. gnu.org. Dostupné online.
- libarchive [online]. Dostupné online.