我們在文章中, 主要講解一下關於Unix cpio的知識。Unix cpio 可以從 cpio 或 tar 格式的歸檔包中存入和讀取文件, 歸檔包是一種包含其他文件和有關信息的文件。
有關信息包括:文件名, 屬主, 時標(timestamp), 和訪問權限。 歸檔包可以是磁盤上的 其他文件, 也可以是磁帶或管道。
Unix cpio 有三種操作模式:
在copy-out模式中,Unix cpio 把文件復制到歸檔包中。它從標准輸入獲得文件名列表 (一行一個), 把歸檔包寫到標准輸出。生成文件名列表的典型方法是使用find 命令; 你可能要在 find 後面用上 -depth選項, 減少因為進入沒有訪問權限的目錄而引起的麻煩。
在copy-in模式中, cpio 從歸檔包裡讀取文件, 或者列出歸檔包裡的內容。它從標准輸入讀入歸檔包。任何不是選項的命令行參數被視為shell的通配符模式串 (globbing pattern); 在歸檔包中, 只有文件名匹配這些模式串的文件才能復制出來。 和 shell 中不一樣, 文件名起始處的 '.' 可以匹配模式串起始處的通配符, 文件名中的 '/' 也可以匹配通配符。 如果沒有給出模式串, 那麼將讀出所有文件。
在copy-pass模式中, Unix cpio把文件從一棵目錄樹復制到另一棵, 它結合了 copy-in 和 copy-out 的操作, 但不使用歸檔包。 cpio從標准輸入讀取欲復制的文件名列表; 目標目錄作為非選項的命令行參數給出。
Unix cpio支持下列的歸檔格式: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, 和 POSIX.1 tar。
"binary"格式是過時格式, 因為它保存文件信息的方法無法應用在不同體系的機器間移植。"old ASCII" 格式可以跨平台使用, 但是不能用於超過 65536 個 i 節點的文件系統中。
"new ASCII" 格式可以跨平台使用, 也適用於任意大小的文件系統, 但不是所有版本的 cpio 都支持; 目前只有 GNU 和 System VR4 的 cpio 支持。"crc" 格式 類似於 "new ASCII" 格式, 同時對每個文件計算校驗和。cpio 在創建歸檔包時算出校驗和, 解開文件時進行校驗。 "HPUX" 格式用於兼容 HP UNIX 的 Unix cpio, 它用了獨特的方法來保存設備文件。
"tar" 格式用以兼容 tar 程序。它不能歸檔文件名超過 100 個字符的文件, 也不能歸檔特殊文件 (塊設備或字符設備)。 "POSIX.1 tar" 格式不能歸檔文件名超過 255 個字符的文件(小於, 除非文件名的最右邊有一個 "/")。
缺省情況下, Unix cpio 為了兼容老式的 cpio 程序, 創建 "binary" 格式的歸檔包。當展開歸檔包時, cpio 能夠自動識別歸檔包的格式, 而且可以讀取在其他字節順序的機器上創建的歸檔包。
Unix cpio 的某些選項只能用在對應的操作模式上; 參見總覽小節, 裡面列出了什麼選項可以用在什麼模式上。