Unix cpio命令詳細(xì)解析
我們?cè)谖恼轮校?主要講解一下關(guān)于Unix cpio的知識(shí)。Unix cpio 可以從 cpio 或 tar 格式的歸檔包中存入和讀取文件, 歸檔包是一種包含其他文件和有關(guān)信息的文件。
有關(guān)信息包括:文件名, 屬主, 時(shí)標(biāo)(timestamp), 和訪問(wèn)權(quán)限。 歸檔包可以是磁盤(pán)上的 其他文件, 也可以是磁帶或管道。
Unix cpio 有三種操作模式:
在copy-out模式中,Unix cpio 把文件復(fù)制到歸檔包中。它從標(biāo)準(zhǔn)輸入獲得文件名列表 (一行一個(gè)), 把歸檔包寫(xiě)到標(biāo)準(zhǔn)輸出。生成文件名列表的典型方法是使用find 命令; 你可能要在 find 后面用上 -depth選項(xiàng), 減少因?yàn)檫M(jìn)入沒(méi)有訪問(wèn)權(quán)限的目錄而引起的麻煩。
在copy-in模式中, cpio 從歸檔包里讀取文件, 或者列出歸檔包里的內(nèi)容。它從標(biāo)準(zhǔn)輸入讀入歸檔包。任何不是選項(xiàng)的命令行參數(shù)被視為shell的通配符模式串 (globbing pattern); 在歸檔包中, 只有文件名匹配這些模式串的文件才能復(fù)制出來(lái)。 和 shell 中不一樣, 文件名起始處的 '.' 可以匹配模式串起始處的通配符, 文件名中的 '/' 也可以匹配通配符。 如果沒(méi)有給出模式串, 那么將讀出所有文件。
在copy-pass模式中, Unix cpio把文件從一棵目錄樹(shù)復(fù)制到另一棵, 它結(jié)合了 copy-in 和 copy-out 的操作, 但不使用歸檔包。 cpio從標(biāo)準(zhǔn)輸入讀取欲復(fù)制的文件名列表; 目標(biāo)目錄作為非選項(xiàng)的命令行參數(shù)給出。
Unix cpio支持下列的歸檔格式: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, 和 POSIX.1 tar。
"binary"格式是過(guò)時(shí)格式, 因?yàn)樗4嫖募畔⒌姆椒o(wú)法應(yīng)用在不同體系的機(jī)器間移植。"old ASCII" 格式可以跨平臺(tái)使用, 但是不能用于超過(guò) 65536 個(gè) i 節(jié)點(diǎn)的文件系統(tǒng)中。
"new ASCII" 格式可以跨平臺(tái)使用, 也適用于任意大小的文件系統(tǒng), 但不是所有版本的 cpio 都支持; 目前只有 GNU 和 System VR4 的 cpio 支持。"crc" 格式 類似于 "new ASCII" 格式, 同時(shí)對(duì)每個(gè)文件計(jì)算校驗(yàn)和。cpio 在創(chuàng)建歸檔包時(shí)算出校驗(yàn)和, 解開(kāi)文件時(shí)進(jìn)行校驗(yàn)。 "HPUX" 格式用于兼容 HP UNIX 的 Unix cpio, 它用了獨(dú)特的方法來(lái)保存設(shè)備文件。
"tar" 格式用以兼容 tar 程序。它不能歸檔文件名超過(guò) 100 個(gè)字符的文件, 也不能歸檔特殊文件 (塊設(shè)備或字符設(shè)備)。 "POSIX.1 tar" 格式不能歸檔文件名超過(guò) 255 個(gè)字符的文件(小于, 除非文件名的最右邊有一個(gè) "/")。
缺省情況下, Unix cpio 為了兼容老式的 cpio 程序, 創(chuàng)建 "binary" 格式的歸檔包。當(dāng)展開(kāi)歸檔包時(shí), cpio 能夠自動(dòng)識(shí)別歸檔包的格式, 而且可以讀取在其他字節(jié)順序的機(jī)器上創(chuàng)建的歸檔包。
Unix cpio 的某些選項(xiàng)只能用在對(duì)應(yīng)的操作模式上; 參見(jiàn)總覽小節(jié), 里面列出了什么選項(xiàng)可以用在什么模式上。
【編輯推薦】