cpio工具介紹

tonykorn97發表於2006-04-23

  cpio命令可以從tar或者cpio檔案檔案中拷入或者拷出檔案。cpio命令和tar命令相容,但是這個命令具備一些tar命令沒有的功能,如下所示:   

  
  


支援cpio和tar兩種檔案檔案格式;   

  支援許多老式磁帶資料格式;   

   能夠透過一個管道(pipe-line)讀取檔案的檔名。

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245240/,如需轉載,請註明出處,否則將追究法律責任。

相關文章