cpio

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
cpio
Тип Архіватор
Розробник GNU
Стабільний випуск 2.15 (2024-01-14)
Операційна система Unix-подібні
Мова програмування C
Ліцензія GPL
Вебсайт gnu.org/software/cpio/

cpio — це архіватор файлів без стиснення та її формат архіву в Unix-подібних операційних системах.

Назва програми походить від англ. copy io/out.

Історія[ред. | ред. код]

cpio була розроблена в 1977 для архівації на стрічку в Programmer Workbench UNIX - версії UNIX на базі UNIX v7, потім вона була портована на інші Unix-системи.

З моменту свого створення формат архіву cpio файлів зазнав кількох, іноді несумісних, змін. Найбільш помітною є перехід з використання бінарного формату метаданих файлу ASCII (текстовий) формат.

В подальшому стали використовувати інші програми резервного копіювання та архівації, наприклад утиліта tar, майже на всіх Unix витіснила cpio. Але cpio залишився форматом архіву в менеджері пакетів RPM, в програмі initramfs ядра Linux 2.6, та в інсталяторі Apple (pax).

Приклади роботи[ред. | ред. код]

cpio як і tar, був створений для зберігання резервних копій файлів Його робота полягає в тому, щоб взяти ієрархічну структуру каталогів, файлів, разом з їх метаданими (номер inode, права, часові мітки) та сформувати безперервний потік, який можна записати на стрічку. Він не стискає свій зміст, але отриманий потік або файл часто стискають за допомогою gzip або зовнішніх утиліт.

Створення архіву[ред. | ред. код]

Для створення архіву використовується опція -o (англ. copy-out). При цьому програма cpio очікує на stdin список файлів які потрібно заархівувати.

У цьому прикладі утиліта find формує список імен файлів разом з шляхами, передає це в stdin утиліті cpio. cpio видає готовий архів в stdout.

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

Розпаковка[ред. | ред. код]

Для розпаковки англ. copy-in, використовується опція -i

При цьому програма cpio очікує в stdin архів, і вона буде відтворювати на файловій системі файли. Опція -d означає створювати також каталоги за потреби. Опція -v додає більш інформативного виводу процесу .

$ cpio -i -vd < archive.cpio

Для розпаковки всі інші аргументи які йдуть після опцій, вважаються іменами файлів (з підтримкою глобів) які необхідно розпакувати.

Наприклад розпаковка лише одного файлу /etc/fstab:

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

Перелік файлів в архіві[ред. | ред. код]

Для того щоб подивитись які файли є в архіву використовується опція -t:

$ cpio -t < archive.cpio

Архів може містити в собі як абсолютні так і відносні шляхи файлів.

Копіювання[ред. | ред. код]

cpio підтримує ще тип операцій - копіювання файлів, це опція -p (англ. pass-through).

Ця операція поєднує кроки copy-out та copy-in не створюючи безпосередньо файл архіву. Копіює створюючи каталоги з потребою, виставляє права на файли, а також можливо заміняючи існуючи файли (опція -u), і виводячи прогрес в stdout (-v).

$ find . -depth -print | cpio -p -dumv new-path

Стандартизація POSIX[ред. | ред. код]

Утиліта cpio була в стандарті до POSIX.1-1988, але була виключена з POSIX.1-2001. Для роботи з cpio пропонується утиліта pax яка може працювати з архівами cpio (опція -x с значеннями cpoi та bcpio для binary metadata cpio). [1] [2]


Дивись також[ред. | ред. код]

Список літератури[ред. | ред. код]