cpio - cpio

cpio
Pierwotny autor (autorzy) Dick Haight
Deweloper(zy) AT&T Bell Laboratories
Pierwsze wydanie 1977 ; 44 lata temu ( 1977 )
System operacyjny Unix i uniksopodobne
Rodzaj Komenda
Licencja GNU cpio: biblioteka GPLv3 bsdcpio: nowa licencja BSD
cpio
Rozszerzenie nazwy pliku
.cpio
Rodzaj mediów internetowych
aplikacja/x-cpio
Jednolity identyfikator typu (UTI) public.cpio-archive
Rodzaj formatu Archiwizator plików

cpio to ogólne narzędzie do archiwizacji plików i związane z nim formaty plików . Jest instalowany głównie w systemach operacyjnych typu Unix. Program narzędziowy był pierwotnie pomyślany jako program do archiwizacji na taśmach jako część środowiska Programmer's Workbench ( PWB/UNIX ) i był składnikiem praktycznie każdego systemu operacyjnego Unix wydanego później. Jego nazwa pochodzi od wyrażenia copy in and out , w ścisłym opisie użycia przez program standardowego wejścia i standardowego wyjścia w jego działaniu.

Wszystkie warianty Uniksa obsługują również inne programy do tworzenia kopii zapasowych i archiwizacji, takie jak tar , który stał się bardziej rozpoznawalny. Użycie cpio przez RPM Package Manager , w programie initramfs jądra Linux 2.6 oraz w Instalatorze Apple ( pax ) czyni cpio ważnym narzędziem do archiwizacji.

Od czasu oryginalnego projektu cpio i jego format pliku archiwum przeszły kilka, czasem niekompatybilnych, zmian. Najbardziej godna uwagi jest zmiana, obecnie opcja operacyjna, z używania binarnego formatu metainformacji pliku archiwum na reprezentację opartą na ASCII .

Historia

cpio pojawił się w wersji 7 Unix jako część projektu Programmer's Workbench .

Operacja i format archiwum

cpio został pierwotnie zaprojektowany do przechowywania archiwów plików kopii zapasowych na urządzeniu taśmowym w sposób sekwencyjny, ciągły. Nie kompresuje żadnej zawartości, ale powstałe archiwa są często kompresowane za pomocą gzipa lub innych zewnętrznych kompresorów.

Tworzenie archiwum

Podczas tworzenia archiwów podczas operacji kopiowania , zainicjowanej flagą wiersza poleceń -o , cpio odczytuje nazwy ścieżek plików i katalogów ze swojego standardowego kanału wejściowego i zapisuje wynikowy strumień bajtów archiwum na swoim standardowym wyjściu. Dlatego Cpio jest zwykle używany z innymi narzędziami, które generują listę plików do archiwizacji, takimi jak program find .

Powstałe archiwum cpio to sekwencja plików i katalogów połączonych w jedno archiwum, oddzielone sekcjami nagłówka z metainformacjami o pliku, takimi jak nazwa pliku, numer i-węzła, właściciel, uprawnienia i sygnatury czasowe. Zgodnie z konwencją, nazwa pliku archiwum ma zwykle rozszerzenie cpio .

W tym przykładzie użyto narzędzia find do wygenerowania listy nazw ścieżek rozpoczynających się w bieżącym katalogu w celu utworzenia archiwum drzewa katalogów:

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

Ekstrakcja

Podczas operacji kopiowania , zainicjowanej przez flagę wiersza poleceń i , cpio odczytuje archiwum ze swojego standardowego wejścia i odtwarza zarchiwizowane pliki w systemie plików systemu operacyjnego.

$ cpio -i -vd < archive.cpio

Flaga wiersza poleceń d mówi cpio, aby w razie potrzeby konstruował katalogi. Flaga v ( pełny ) wyświetla nazwy plików podczas ich wyodrębniania.

Wszelkie pozostałe argumenty wiersza poleceń inne niż flagi opcji są podobnymi do powłoki wzorcami globbingu; z archiwum kopiowane są tylko pliki z archiwum o pasujących nazwach. Poniższy przykład wyodrębnia plik /etc/fstab z archiwum:

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

Lista

Pliki zawarte w archiwum cpio mogą być wymienione z tym wywołaniem:

$ cpio -t < archive.cpio

Lista może być przydatna, ponieważ archiwum cpio może zawierać ścieżki bezwzględne, a nie względne (np. /bin/ls vs. bin/ls ).

Kopiuj

Cpio obsługuje trzeci typ operacji, który kopiuje pliki . Jest to inicjowane za Przejścia flaga opcji ( p ). Ten tryb łączy kroki kopiowania i kopiowania bez faktycznego tworzenia archiwum plików. W tym trybie cpio odczytuje nazwy ścieżek na standardowym wejściu, tak jak operacja kopiowania , ale zamiast tworzyć archiwum, odtwarza katalogi i pliki w innej lokalizacji w systemie plików, określonej w ścieżce podanej w wierszu poleceń argument.

Ten przykład kopiuje drzewo katalogów zaczynając od bieżącego katalogu do innej ścieżki nowa ścieżka w systemie plików, zachowując czasy modyfikacji plików (flag m ), tworząc potrzebne katalogi ( d ), bezwarunkowo zastępując istniejące pliki ( u ), podczas tworzenia lista postępów na standardowym wyjściu ( v ):

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

Standaryzacja POSIX

Cpio narzędzie jest znormalizowany w POSIX .1-1988, ale został pominięty POSIX.1-2001 ze względu na jego rozmiar pliku (i innych) ograniczeń. Na przykład wersja GNU oferuje różne opcje formatu wyjściowego, takie jak „bin” (domyślny i przestarzały) i „ustar” (tar POSIX), z ograniczeniami rozmiaru pliku 2 147 483 647 bajtów (2 GB) i 8 589 934 591 bajtów (8 GB) ).

Formaty plików cpio, ustar i pax są zdefiniowane przez POSIX.1-2001 dla narzędzia pax , które jest obecnie zgodne z POSIX 1003.1-2008 , a więc może odczytywać i zapisywać archiwa w formacie cpio i ustar.

Realizacje

Większość dystrybucji Linuksa dostarcza wersję GNU cpio. FreeBSD i macOS korzystają z licencji BSD bsdcpiodostarczanej z libarchive .

Zobacz też

Bibliografia