Arch manual pages

CPIO(1) General Commands Manual CPIO(1)

cpio - 存取歸檔包中的文件

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

本手冊頁 描述 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 的 某些 選項 只能 用在 相應的 操作模式 上; 參見 總覽 小節, 裏面 列出了 什麼模式 可以用 什麼選項.

-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

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh