Cpio

封存檔案格式

cpioUNIX作業系統的一個檔案備份程式及檔案格式。這項工具最初出現於PWB/UNIX,係用於備份磁帶,後來也被引進到UNIX System IIISystem V,並流行開來。

cpio 可以從 cpio 或 tar 格式的歸檔包中存入和讀取檔案, 歸檔包是一種包含其他檔案和有關資訊的檔案。 有關資訊包括:檔名, 屬主, 時標(timestamp), 和訪問權限。 歸檔包可以是磁碟上的 其他檔案, 也可以是磁帶或管道.

範例操作和歸檔格式

cpio 設計的初衷,是用於在磁帶裝置上,以順序、連續的方式儲存備份的檔案歸檔。cpio 本身不會對任何歸檔內容進行壓縮,為了便於傳輸,對於 cpio 的輸出歸檔人們經常會使用 gzip 等外部程式進行壓縮。

建立歸檔

使用以下命令可以用當前目錄下的所有檔案和資料夾來新增的 cpio 歸檔檔案:

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

提取歸檔

cpio 的 copy-input 操作由命令列標識 i 發起。在該過程中,cpio 從標準輸入讀取已有的歸檔,然後在作業系統的檔案系統中,恢復建立已經被歸檔的檔案。

$ cpio -i -vd < archive.cpio

命令列標識 d 告訴 cpio 按需重建目錄。指定命令列標識 v (verbose) 時,提取檔案會同時列印其檔名。

除了選項標識外,其餘所有命令列參數都是類 shell 的 globbing-模式,歸檔中,只有檔名匹配的檔案才會從中提取出來。下面這個範例從歸檔 archive.cpio 中提取檔案 /etc/fstab

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

列出歸檔檔案列表

下面這行命令可以列出指定 cpio 歸檔中包含的全部檔案:

$ cpio -t < archive.cpio

列出歸檔檔案列表在歸檔內可能包含絕對路徑時會很實用(例如 /bin/lsbin/ls)。

複製檔案

除上述操作外,cpio 還支援複製檔案的操作,該操作由命令列標識 p(pass) 發起。該模式可以同時進行 copy-incopy-out 操作,而不會建立任何歸檔檔案。在該模式下,cpio 從標準輸入讀取路徑名(就像 copy-out 中的那樣,但這裏不會建立歸檔檔案),然後 cpio 將這些檔案和目錄複製建立到命令列參數指定的不同位置。

下面這個範例將從當前目錄開始,將完整目錄樹複製到 new-path 路徑下。指定標識 m 時,該複製過程會保留檔案原有的編輯時間,d 標識會命令 cpio 按需建立目錄,指定 u 標識時,複製過程會直接覆蓋已經存在的同名檔案,v 標識會在標準輸出列印複製進度:

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