GNU/CPIO 學習小結

CPIO 是一種binary file archiver, 同時也定義了一種文件格式(file format). CPIO software utility 被作爲tape archiver,它最初是作爲PWB/UNIX(Programmer's Workbech:1976, 在UNIX最開始在Bell Lab出現的時候,UNIX主要是用於研究目的, 隨着UNIX的商業價值逐漸被挖掘出來,一個裁剪過的UNIX 版本被開發,它主要是用於作爲生產環境,而不是用於研究。詳情見http://en.wikipedia.org/wiki/PWB/UNIX)的一部分出現的, 它同時也是Unix System III和Unix System V的組成部分。 然而,衍生於research unix的tar,被認爲是一種更好的solution。 但是cpio依然在許多重要的地方有其身影, 如RPM Package Manager, Linux Kernel 2.5 series initramfs, mkinitcpio以及Apple's "pax" installer archives.

GNU cpio 用於將多個文件拷貝到cpio,tar archive,或者從cpio或tar archive 中拷貝出來。cpio支持多種archive formats: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, POSIX.1 tar。 默認情況下, cpio創建binary 格式的archive, 目的是與old cpio 程序相兼容。 當從archives抽取內容的時候, cpio會自動識別正在從何種格式的archive中讀取數據,同時可以從不同字節序(byte-order)的機器上讀入archives。

CPIO 導讀

ls | cpio -ov > directory.cpio

當創建一個archive的時候, cpio默認從standard input讀入文件列表,這些文件被archived後默認輸出到standard output中去, 或者通過指定-F 選項來決定輸出到何種其他device上去。

-o options: 指定創建archive; -v : 當file被添加到結果archive的時候打印出其文件名。

如果archive整個文件目錄, 使用find命令可以提供完整的文件列表給cpio:

find . -print -depth | cpio -ov > tree.cpio (copy-out mode)



當從cpio archive中抽取文件的時候,有幾點要注意, 首先 cpio默認的不會創建directory, 同時如果同名的文件如果已經存在,cpio不會覆
蓋已存在的文件。

cpio -iv < tree.cpio (copy-in mode)

如果要覆蓋以及存在的同名文件,則需要指定-u option,

cpio -iuv < tree.cpio


CPIO's copy-in mode, copy-out mode and copy-pass mode
copy-in mode
在copy-in mode, cpio 從archive 文件拷貝出文件或者顯示archive中文件的內容。它從standard input 讀入archive 文件。



copy-out mode
在copy-out mode, cpio 拷貝文件到一個archive中去, 它從standard input中讀入文件列表,對每個文件處理完後將結果輸出到standard

output中去。和find配合使用



copy-pass mode:

可以看出是copy-in 和copy-out mode兩個階段的結合,所以不必產生cpio archive文件 就可以完成文件的拷貝

find . -depth -print0 | cpio --null -pvd new-dir

-p|--pass-through options.




顯示cpio archive中包含的文件列表: cpio -t < tree.cpio.













發佈了31 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章