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 程式 的
版本號, 然後退出.
徐明 <[email protected]>
2001/09/25
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh