- 論壇徽章:
- 1
|
出處:Unix愛好者家園unix-cd.com
cpio - 存取歸檔包中的文件
語法 Syntax
cpio -o [ -aBLuvV ] [ -C bufsize ] [ -c | -H format ][ -K volumesize ] [ [ -O file [, file ... ] ] [ -M message ] ] [ -Pifd,ofd ]
cpio -i [ -6AbBcdfkmnqrsStTuvV ] [-C bufsize ] [ [ -I file [, file ... ] ]
[ -M message ] ] [ -Pifd,ofd ] [ pattern ... ]
cpio -p [ -adlLmruvV ] [ -Pifd,ofd ] directory
描述 (DEscriptION)
cpio 可以從 cpio 或 tar 格式的歸檔包中存入和讀取文件, 歸檔包是一種包含其他文件和有關(guān)信息的文件。 有關(guān)信息包括:文件名, 屬主, 時(shí)標(biāo)(timestamp), 和訪問權(quán)限。 歸檔包可以是磁盤上的 其他文件, 也可以是磁帶或管道。
cpio 有三種操作模式:
在copy-out模式中, cpio 把文件復(fù)制到歸檔包中。它從標(biāo)準(zhǔn)輸入獲得文件名列表 (一行一個(gè)), 把歸檔包寫到標(biāo)準(zhǔn)輸出。生成文件名列表的典型方法是使用find 命令; 你可能要在 find 后面用上 -depth選項(xiàng), 減少因?yàn)檫M(jìn)入沒有訪問權(quán)限的目錄而引起的麻煩。
在copy-in模式中, cpio 從歸檔包里讀取文件, 或者列出歸檔包里的內(nèi)容。它從標(biāo)準(zhǔn)輸入讀入歸檔包。任何不是選項(xiàng)的命令行參數(shù)被視為shell的通配符模式串 (globbing pattern); 在歸檔包中, 只有文件名匹配這些模式串的文件才能復(fù)制出來。 和 shell 中不一樣, 文件名起始處的 '.' 可以匹配模式串起始處的通配符, 文件名中的 '/' 也可以匹配通配符。 如果沒有給出模式串, 那么將讀出所有文件。
在copy-pass模式中, cpio把文件從一棵目錄樹復(fù)制到另一棵, 它結(jié)合了 copy-in 和 copy-out 的操作, 但不使用歸檔包。 cpio從標(biāo)準(zhǔn)輸入讀取欲復(fù)制的文件名列表; 目標(biāo)目錄作為非選項(xiàng)的命令行參數(shù)給出。
cpio支持下列的歸檔格式: binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, 和 POSIX.1 tar。
"binary"格式是過時(shí)格式, 因?yàn)樗4嫖募畔⒌姆椒o法應(yīng)用在不同體系的機(jī)器間移植。"old ASCII" 格式可以跨平臺使用, 但是不能用于超過 65536 個(gè) i 節(jié)點(diǎn)的文件系統(tǒng)中。 "new ASCII" 格式可以跨平臺使用, 也適用于任意大小的文件系統(tǒng), 但不是所有版本的 cpio 都支持; 目前只有 GNU 和 System VR4 的 cpio 支持。"crc" 格式 類似于 "new ASCII" 格式, 同時(shí)對每個(gè)文件計(jì)算校驗(yàn)和。cpio 在創(chuàng)建歸檔包時(shí)算出校驗(yàn)和, 解開文件時(shí)進(jìn)行校驗(yàn)。 "HPUX" 格式用于兼容 HP UNIX 的 cpio, 它用了獨(dú)特的方法來保存設(shè)備文件。
"tar" 格式用以兼容 tar 程序。它不能歸檔文件名超過 100 個(gè)字符的文件, 也不能歸檔特殊文件 (塊設(shè)備或字符設(shè)備)。 "POSIX.1 tar" 格式不能歸檔文件名超過 255 個(gè)字符的文件(小于, 除非文件名的最右邊有一個(gè) "/")。
缺省情況下, cpio 為了兼容老式的 cpio 程序, 創(chuàng)建 "binary" 格式的歸檔包。當(dāng)展開歸檔包時(shí), cpio 能夠自動識別歸檔包的格式, 而且可以讀取在其他字節(jié)順序的機(jī)器上創(chuàng)建的歸檔包。
cpio 的某些選項(xiàng)只能用在對應(yīng)的操作模式上; 參見總覽小節(jié), 里面列出了什么選項(xiàng)可以用在什么模式上。
選項(xiàng) (OPTIONS)
-0, --null 在copy-out 和 copy-pass 模式中, 認(rèn)為輸入的文件名以 null字符結(jié)尾,而不是換行符, 這樣即使文件名中包含換行符, 也不影響歸檔。 GNU find 是生成 null 結(jié)尾文件名列表的方法之一。
-a, --reset-access-time 讀取完文件后重置文件的訪問時(shí)間, 這樣看上去就象沒被訪問過一樣。
-A, --append 追加到已經(jīng)存在的歸檔包中。僅用于 copy-out模式。該歸檔包必須是用 -O 或 -F (--file) 選項(xiàng)指定的磁盤文件。
-b, --swap 在 copy-in 模式中, 顛倒數(shù)據(jù)中字中的半字和半字中的字節(jié)順序。 相當(dāng)于 -sS 使用這個(gè)選項(xiàng),可以在大端數(shù)和小端數(shù)機(jī)器之間轉(zhuǎn)換 32 位整數(shù)。
-B 把 I/O 塊大小設(shè)置成 5120 字節(jié),最初的塊大小是 512 字節(jié)。
--block-size=BLOCK-SIZE
設(shè)置 I/O 塊 大小 為 BLOCK-SIZE * 512 字節(jié)。
-c 使用老式的跨平臺 (ASCII) 歸檔格式。
-C IO-SIZE, --io-size=IO-SIZE 設(shè)置 I/O 塊大小為 IO-SIZE 字節(jié)。
-d, --make-directories 在需要的地方創(chuàng)建開始目錄。
-E FILE, --pattern-file=FILE 在 copy-in 模式中, 從 FILE 中讀取用于匹配文件名的模式串, FILE 中的內(nèi)容就象 cpio 的非選項(xiàng)參數(shù)一樣看待。
-f, --nonmatching 只復(fù)制那些不匹配任何給定的模式串的文件。
-F, --file=archive 使用歸檔文件名, 而不是標(biāo)準(zhǔn)輸入或輸出。 如果把其他機(jī)器上的磁帶機(jī)作成歸檔文件使用, 文件名要用 "HOSTNAME:" 開始。 主機(jī)名前面可以加上用戶名和一個(gè) '@', 作為訪問遠(yuǎn)程磁帶機(jī)的用戶 (如果你有這樣的權(quán)限, 一般在用戶的 ~/.rhosts 文件中會有這么一項(xiàng))。
--force-local 和 -F, -I, 或 -O, 一起用, 即使文件名中含有一個(gè)冒號,也把歸檔文件看作本地文件, 一般說來冒號指出一個(gè)遠(yuǎn)程主機(jī)名字。
-H FORMAT, --format=FORMAT 使用歸檔格式 FORMAT。 有效的格式在下面列出, 大小寫均可. "copy-in" 模式的缺省動作是自動檢測歸檔格式, "copy-out" 的缺省格式是 "bin"。
bin 老式的 binary 格式。
odc 老式的 (POSIX.1) 跨平臺格式。
newc 新型 (SVR4) 跨平臺格式, 支持大于 65536 i節(jié)點(diǎn)的文件系統(tǒng)。
crc 新型 (SVR4) 跨平臺格式, 并且計(jì)算校驗(yàn)和。
tar 老式的 tar 格式。
ustar POSIX.1 tar 格式, 也能識別 GNU tar 歸檔文件, 它們相似但不全相同。
hpbin HP UNIX 上的 cpio 使用的老式的 binary 格式。(用獨(dú)特的方法儲存設(shè)備文件)
hpodc HP UNIX 上的 cpio 使用的跨平臺格式。 (用獨(dú)特的方法儲存設(shè)備文件)
-i, --extract 進(jìn)入 copy-in 模式。
-I archive 使用歸檔文件名, 而不是標(biāo)準(zhǔn)輸入。 如果把其他機(jī)器上的磁帶機(jī)作成歸檔文件, 文件名要用 "HOSTNAME:" 開始。 主機(jī)名前面可以加上用戶名和一個(gè) '@', 作為 訪問遠(yuǎn)程 磁帶機(jī)的用戶 (如果你有這樣的權(quán)限, 一般在用戶的 ~/.rhosts 文件中會有這么一項(xiàng))。
-k 無效操作; 只是用來兼容其他版本的 cpio。
-l, --link 如果有可能, 連接文件, 而不是復(fù)制。
-L, --dereference 解除符號連接的關(guān)聯(lián) (復(fù)制符號連接指向的 文件, 而不是連接本身)。
-m, --preserve-modification-time 當(dāng)創(chuàng)建文件時(shí), 保留以前的文件修改時(shí)間。
-M MESSAGE, --message=MESSAGE當(dāng)備份介質(zhì)(例如 磁帶或軟盤) 到達(dá)卷尾時(shí), 顯示一條消息, 提醒用戶插入下一卷。如果 MESSAGE 包含字符串 "%d", 它被替換成當(dāng)前卷號 (從 1 開始)。
-n, --numeric-uid-gid 以詳細(xì)方式 (verbose) 顯示內(nèi)容時(shí), 用數(shù)字顯示 UID 和 GID, 而不是翻譯成名稱。
--no-absolute-filenames 在copy-in模式中, 即使它們在歸檔包中有絕對路徑名。也在當(dāng)前目錄中創(chuàng)建所有相關(guān)文件,
--no-preserve-owner 在 copy-in 和 copy-pass 模式中, 不改變文件的屬主關(guān)系 (譯注: 疑為不保留); 使它們屬于展開它們的用戶。這是普通用戶的缺省行為, 因此 System V 的用戶不致于無意中把文件泄露(give away)。
-o, --create 進(jìn)入 copy-out 模式。
-O archive 使用歸檔文件名, 而不是標(biāo)準(zhǔn)輸出。 如果把其他機(jī)器上的磁帶機(jī)作成歸檔文件, 文件名要用 "HOSTNAME:" 開始。 主機(jī)名前面可以加上用戶名和一個(gè) '@', 作為訪問遠(yuǎn)程磁帶機(jī)的用戶 (如果你有這樣的權(quán)限, 一般在用戶的 ~/.rhosts 文件中會有這么一項(xiàng))。
--only-verify-crc 當(dāng)在 copy-in 模式讀入 CRC 格式的歸檔包時(shí), 不展開里面的文件, 而只是測試文件的 CRC 碼。
-p, --pass-through 進(jìn)入 copy-pass 模式。
--quiet 不顯示復(fù)制的塊數(shù)。
-r, --rename 交互式文件改名。
-R [user][:.][group], --owner [user][:.][group] 在 copy-out 和 copy-pass 模式中, 把所有文件的屬主設(shè)置為指定的用戶和/或用戶組。 無論用戶還是用戶組都必須存在。 如果省略用戶組, 但是給出了分隔符 ":" 或 "。', 則使用給定用戶登錄時(shí)的用戶組。 只有超級用戶能夠改變文件的屬主。
--sparse 在 copy-out 和 copy-pass 模式中, 把大塊數(shù)據(jù) 0 的文件寫成稀疏文件 (sparse file)。
-s, --swap-bytes 在 copy-in 模式中, 交換文件中每一個(gè)半字(字節(jié)對) 中的字節(jié)。
-S, --swap-halfwords 在 copy-in 模式中, 交換文件中每一個(gè)字(4字節(jié)) 中的半字。
-t, --list 顯示輸入歸檔包的內(nèi)容。
-u, --unconditional 替換所有文件, 不再提問是否用舊文件替換已經(jīng)存在的新文件。
-v, --verbose 列出處理的文件, 加上 -t 選項(xiàng)可以列出一個(gè) 'ls -l' 風(fēng)格的列表。在一個(gè)歸檔包內(nèi)容的詳細(xì)列表 (verbose) 中, 如果本地系統(tǒng)不存在歸檔文件的用戶和用戶組名稱, 它們將被替換成其數(shù)字 UID和GID 對應(yīng)于本地系統(tǒng)的用戶和用戶組名稱。
-V --dot 每處理一個(gè)文件, 顯示一個(gè) "."。
--version 顯示 cpio 程序的版本號, 然后退出。
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/31/showart_520599.html |
|