2010年8月25日 星期三

cpio指令介紹

cpio命令詳細用法




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 格式的歸檔包中存入和讀取文件, 歸檔包是一種包含其他文件和有關信息的文件。 有關信息包括:文件名, 屬主, 時標(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 支持。"crc" 格式 類似於 "new ASCII" 格式, 同時對每個文件計算校驗和。cpio 在創建歸檔包時算出校驗和, 解開文件時進行校驗。 "HPUX" 格式用於兼容 HP UNIX 的 cpio, 它用了獨特的方法來保存設備文件。


"tar" 格式用以兼容 tar 程序。它不能歸檔文件名超過 100 個字符的文件, 也不能歸檔特殊文件 (塊設備或字符設備)。 "POSIX.1 tar" 格式不能歸檔文件名超過 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 的用戶不致於無意中把文件洩露(give away)。


-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 程序的版本號, 然後退出。


延伸閱讀
http://linux.vbird.org/linux_basic/0240tarcompress.php#cpio

沒有留言:

張貼留言