cpio
Тип | Архіватор |
---|---|
Розробник | GNU |
Стабільний випуск | 2.15 (2024-01-14) |
Операційна система | Unix-подібні |
Мова програмування | C |
Ліцензія | GPL |
Вебсайт | gnu.org/software/cpio/ |
cpio — це архіватор файлів без стиснення та її формат архіву в Unix-подібних операційних системах.
Назва програми походить від англ. copy in and 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
Утиліта cpio була в стандарті до POSIX.1-1988, але була виключена з POSIX.1-2001. Для роботи з cpio пропонується утиліта pax яка може працювати з архівами cpio (опція -x с значеннями cpoi та bcpio для binary metadata cpio). [1] [2]
- Список команд Unix
- Список форматів архівів