CPIO(1)

NAME
cpio - 存取歸檔包中的檔案

總覽 (SYNOPSIS)
cpio {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--format=format] [--message=message] [--null] [--reset-access-time] [--verbose] [--dot] [--append] [--block-size=blocks] [--dereference] [--io-size=bytes] [--quiet] [--force-local] [--help] [--version] < name-list [> archive] cpio {-i|--extract} [-bcdfmnrtsuvBSV] [-C bytes] [-E file] [-H format] [-M message] [-R [user][:.][group]] [-I [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--make-directories] [--nonmatching] [--preserve-modification-time] [--numeric-uid-gid] [--rename] [--list] [--swap-bytes] [--swap] [--dot] [--unconditional] [--verbose] [--block-size=blocks] [--swap-halfwords] [--io-size=bytes] [--pattern-file=file] [--format=format] [--owner=[user][:.][group]] [--no-preserve-owner] [--message=message] [--force-local] [--no-absolute-filenames] [--sparse] [--only-verify-crc] [--quiet] [--help] [--version] [pattern...] [< archive] cpio {-p|--pass-through} [-0adlmuvLV] [-R [user][:.][group]] [--null] [--reset-access-time] [--make-directories] [--link] [--quiet] [--preserve-modification-time] [--unconditional] [--verbose] [--dot] [--dereference] [--owner=[user][:.][group]] [--no-preserve-owner] [--sparse] [--help] [--version] destination-directory < name-list

描述 (DESCRIPTION)
本手冊頁 描述 GNU 版本 的 cpio. cpio 可以 從 cpio 或 tar 格式 的 歸檔包(archive) 中 讀寫 檔案, 歸檔包 是 一種檔案, 它 由 歸檔檔案 及其 相關信息 組成, 例如 檔名, 屬主, 時標 (timestamp), 和 訪問權限. 歸檔包 可以 是 磁碟上的 檔案, 也可以 是 磁帶或管道. cpio 有 三種 操作模式.

在 copy-out 模式中, cpio 把 檔案 複製到 歸檔包 中. 它 從 標準輸入 讀取 檔名列表, 每行一個檔名. 生成的 歸檔包 寫到 標準輸出. 產生 檔名列表 的 典型方法 是 使用 find 命令; 你 可能 要在 find 後面 用上 -depth 選項, 減少 因為 進入 沒有 訪問權限 的 目錄 引起 的 麻煩.

在 copy-in 模式中, cpio 從 歸檔包 讀取 檔案, 或者 列出 歸檔包 的 內容, 歸檔包 來自 標準輸入. 任何 非選項 命令行參數 被視為 shell 的 通配符模式串 (globbing pattern); 在 歸檔包 中, 只 讀取 檔名 匹配 這些 模式串 的 檔案. 和 shell 環境 不一樣, 檔名 起始處 的 '.' 可以 匹配 模式串 起始處 的 通配符, 檔名中 的 '/' 也可以 匹配 通配符. 如果 沒有 給出 模式串, 那麼 讀取 所有 檔案.

在 copy-pass 模式中, cpio 把 檔案 從 一棵目錄樹 複製到 另一棵, 它 結合了 copy-in 和 copy-out 的 操作, 但是 沒有 使用 歸檔包. cpio 從 標準輸入 讀取 欲複製的 檔名列表; 目標目錄 是 非選項命令行參數.

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 能夠 支持 "new ASCII" 格式. "crc" 格式 類似於 "new ASCII" 格式, 而且 對每個 檔案 計算 校驗和; cpio 在 創建 歸檔包 時 計算 校驗和, 解開 檔案 時 進行 校驗. "HPUX" 格式 用於 相容 HP UNIX 的 cpio, 它 用了 獨特的方法 保存 設備檔案.

"tar" 格式 用以 相容 tar 程式. 它 不能 對 檔名 超過 100 個 字符 的 檔案 歸檔, 也 不能 對 特殊檔案 (塊設備 或 字符設備) 歸檔. "POSIX.1 tar" 格式 不能 對 檔名 超過 255 個 字符 的 檔案 歸檔 (小於 255, 除非 檔名 的 最右邊 有一個 "/").

預設情況下, cpio 為了 相容 老式的 cpio 程式, 創建 "binary" 格式 的 歸檔包. 當展開 歸檔包 時, cpio 能夠 自動識別 歸檔包 的 格式, 而且 能夠 讀取 不同 字節順序 的 機器 上 創建 的 歸檔包.

cpio 的 某些 選項 只能 用在 相應的 操作模式 上; 參見 總覽 小節, 裏面 列出了 什麼模式 可以用 什麼選項.

  選項 (OPTIONS)

-0, --null
    在 copy-out 和 copy-pass 模式中, 認為 輸入的 檔名 以 null 字符 結尾, 而不是 換行符, 這樣 即使 檔名 中 包含 換行符, 也 不影響 歸檔. GNU find 是 生成 null 結尾 檔名 列表 的 方法 之一.

-a, --reset-access-time
    讀取完 檔案 後 重置 檔案的訪問時間, 這樣 看上去 就像 沒有 訪問 過 這個 檔案.

-A, --append
    添加到 現存的 歸檔包 中. 僅用於 copy-out 模式. 該 歸檔包 必須是 用 -O 或 -F (--file) 選項 生成的 磁碟檔案.

-b, --swap
    在 copy-in 模式中, 顛倒 數據中 字 的 字節 順序. 相當於 -sS. 使用 這個 選項 可以 在 大端數 和 小端數 機器 之間 轉換 32 位 整數.

-B  把 I/O 塊 大小 設置成 5120 字節. 最初的 塊大小 是 512 字節.

--block-size=BLOCK-SIZE
    設置 I/O 塊 大小 為 BLOCK-SIZE * 512 字節.

-c  使用 老式的 跨平台 (ASCII) 歸檔 格式.

-C IO-SIZE, --io-size=IO-SIZE
    設置 I/O 塊 大小 為 IO-SIZE 字節.

-d, --make-directories
    在 需要的地方 創建 起始目錄.

-E FILE, --pattern-file=FILE
    在 copy-in 模式中, 從 FILE 裏 讀取 用於 匹配 檔名 的 模式串. FILE 的 內容 如同 cpio 的 非選項 參數.

-f, --nonmatching
    只複製 那些 不匹配 給定的 模式串 的 檔案.

-F, --file=archive
    使用 歸檔包檔案, 而不是 標準輸入或輸出. 如果 把 其他 機器上 的 磁帶機 作成 歸檔包檔案, 檔名 要用 "HOSTNAME:" 開始. 主機名 前面 可以 加上 使用者名 和 一個 '@', 作為 訪問 遠程 磁帶機 的 使用者 (如果 你有 這樣的 權限, 一般 在 使用者的 ~/.rhosts 檔案中 會有 這麼 一項).

--force-local
    和 -F, -I, 或 -O, 一起用, 可以 把 歸檔包檔案 看作 本地檔案, 即使 檔名 中 含有 冒號, 一般說來 冒號 指出 一個 遠程主機 的 存在.

-H FORMAT, --format=FORMAT
    使用 歸檔格式 FORMAT. 有效 的 格式 列在 下面, 大小寫 均可. "copy-in" 模式 的 預設動作 是 自動檢測 歸檔格式, "copy-out" 的 預設格式 是 "bin".

    bin 老式的 binary 格式.

    odc 老式的 (POSIX.1) 跨平台 格式.

    newc
        新型 (SVR4) 跨平台 格式, 支持 大於 65536 i節點 的 檔案系統.

    crc 新型 (SVR4) 跨平台 格式, 並且 計算 校驗和.

    tar 老式的 tar 格式.

    ustar
        POSIX.1 tar 格式, 也能 識別 GNU tar 歸檔檔案, 它們 相似 但不全相同.

    hpbin
        HP UNIX 上的 cpio 使用的 老式的 binary 格式. (用 獨特的方法 儲存 設備檔案)

    hpodc
        HP UNIX 上的 cpio 使用的 跨平台 格式. (用 獨特的方法 儲存 設備檔案)

-i, --extract
    進入 copy-in 模式.

-I archive
    使用 歸檔包檔案, 而不是 標準輸入. 如果 把 其他 機器上 的 磁帶機 作成 歸檔包檔案, 檔名 要用 "HOSTNAME:" 開始. 主機名 前面 可以 加上 使用者名 和 一個 '@', 作為 訪問 遠程 磁帶機 的 使用者 (如果 你有 這樣的 權限, 一般 在 使用者的 ~/.rhosts 檔案中 會有 這麼 一項).

-k  無效操作; 只是 用來 相容 其他 版本 的 cpio.

-l, --link
    如果有可能, 連接 檔案, 而不是 複製.

-L, --dereference
    解除 符號連接 的 關聯 (複製 符號連接 指向的 檔案, 而不是 連接 本身).

-m, --preserve-modification-time
    當 創建 檔案 時, 保留 以前的 檔案修改時間.

-M MESSAGE, --message=MESSAGE
    當 備份 媒體 (例如 磁帶或軟碟) 到達 卷尾時, 顯示 一條 消息, 提醒 使用者 插入 下一卷. 如果 MESSAGE 包含 字符串 "%d", 它 替換成 當前 卷號 (從 1 開始).

-n, --numeric-uid-gid
    以 繁瑣模式 (verbose) 顯示 內容 時, 用 數字 顯示 UID 和 GID, 而 不是 名稱.

--no-absolute-filenames
    在 copy-in 模式中, 在 當前目錄中 創建 所有 相關 檔案, 即使 它們 在 歸檔包中 有 絕對路徑名.

--no-preserve-owner
    在 copy-in 和 copy-pass 模式中, 不改變 檔案 的 屬主關系 (譯注: 疑為不保留); 使 它們 屬於 展開 它們 的 使用者. 這是 普通使用者 的 預設行為, 因此 System V 的 使用者 不致於 無意中 把 檔案 送人.

-o, --create
    進入 copy-out 模式.

-O archive
    使用 歸檔包檔案, 而不是 標準輸出. 如果 把 其他 機器上 的 磁帶機 作成 歸檔包檔案, 檔名 要用 "HOSTNAME:" 開始. 主機名 前面 可以 加上 使用者名 和 一個 '@', 作為 訪問 遠程 磁帶機 的 使用者 (如果 你有 這樣的 權限, 一般 在 使用者的 ~/.rhosts 檔案中 會有 這麼 一項).

--only-verify-crc
    當以 copy-in 模式 讀入 CRC 格式 的 歸檔包 時, 不展開 裏面的檔案, 只是 測試 檔案的 CRC 碼.

-p, --pass-through
    進入 copy-pass 模式.

--quiet
    不顯示 複製的 塊數.

-r, --rename
    交互式 檔案 改名.

-R [user][:.][group], --owner [user][:.][group]
    在 copy-out 和 copy-pass 模式中, 把 所有檔案 的 屬主 設置為 指定的 使用者 和/或 使用者組. 無論 使用者 還是 使用者組 都必須 存在. 如果 省略 使用者組, 但卻 給出了 分隔符 ":" 或 ".', 則 使用 該 使用者 的 登入使用者組. 只有 超級使用者 能夠 改變 檔案的屬主.

--sparse
    在 copy-out 和 copy-pass 模式中, 把 大塊 數據0 的 檔案 寫成 稀疏檔案 (sparse file).

-s, --swap-bytes
    在 copy-in 模式中, 交換 檔案中 每一個 半字(字節對) 中的 字節.

-S, --swap-halfwords
    在 copy-in 模式中, 交換 檔案中 每一個 字(4字節) 中的 半字.

-t, --list
    顯示 輸入(歸檔包) 的 內容.

-u, --unconditional
    替換 所有 檔案, 不再提問 是否 用 舊檔案 替換 已經存在的 新檔案.

-v, --verbose
    列出 處理的檔案, 加上 -t 選項 可以 列出 一個 'ls -l' 風格的列表. 在一個 歸檔包 的 內容 詳細列表 (verbose) 中, 如果 本地系統 不存在 歸檔檔案的 使用者和使用者組 名稱, 就用 其數字 UID和GID 對應於 本地系統的 使用者和使用者組 名稱 代替.

-V --dot
    每處理一個檔案, 顯示一個 ".".

--version
    顯示 cpio 程式 的 版本號, 然後退出.

[中文版維護人]
徐明 <xuming@iname.com>

[中文版最新更新]
2001/09/25

《中國Linux論壇man手冊頁翻譯計劃》
http://cmpp.linuxforum.net