Linux基礎命令---cpio

一生有你llx發表於2018-12-14

cpio

從歸檔中複製檔案,或者複製檔案到歸檔中。此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

Cpio 命令有三種工作模式:

1 )copy-out mode,cpio指令將檔案複製到歸檔。它讀取標準輸入上的檔名列表(每行一個),將歸檔包寫到標準輸出。

2 )copy-in mode,cpio指令從歸檔中複製檔案,從標準輸入讀取歸檔包。

3 )cpio-pass mode,從目錄樹複製檔案到另一個目錄,它從標準輸入中讀取要複製的檔案列表。

 

1 、語法

cpio -o namelist  > archive 

cpio  -i  <  archive

cpio  -p  dst-dir < namelist

 

2 、選項列表

選項

說明

-? | --help

幫助資訊

--version

顯示命令版本資訊

主操作模式


-i | --extract

從包中提取檔案,copy-in模式

-o | --create

建立包,copy-out模式

-p | --pass-through

執行copy-pass模式

-t | --list

列印輸入內容列表

-l | --list

對於每一個壓縮的檔案,列出壓縮檔案大小、解壓大小、壓縮比列、壓縮前的檔名字

應用在所有模式的選項


-B

設定IO塊的大小為5120位元組

-c

使用老式跨平臺的歸檔格式

-f

僅拷貝不匹配任意給定模式的檔案

-F

用檔名代替標準輸入和輸出

-n | --numeric-uid-gid

在內容列表的詳細資訊中顯示uid和gid

--quite

不列印以拷貝的塊數

-v | --verbose

詳細資訊

-V | -dot

每處理一個檔案就列印一個“.”

應用於copy-in的徐昂想


-b | --swap


-r | --rename

互動式重新命名

-E

把指定檔案的內容當做匹配字串

應用於copy-out的選項


-A | --append

追加到文件的結尾

-O

使用包檔名,而不是標準輸入輸出

應用於copy-pass的選項


-l | --link

在執行時儘可能建立連結,而不是複製檔案

應用於copy-in和copy-out


--absolute-filenames

檔名不出去檔案系統字首

--no-absolute-filenames

當前目錄建立所有檔案

應用於copy-out和copy-pass


-0 | --null

輸入檔名以null字元結尾

-a | --reset-access-time

檔案讀取後,還原檔案的訪問時間

-I

從檔案讀入

-R | --owner

設定所有檔案的組合使用者資訊

應用於copy-in和copy-pass


-d

必要時建立目錄

-m

建立檔案是,保留檔案修改時間屬性

-u

無條件覆蓋

 

3 、例子程式碼

% ls | cpio -ov > directory.cpio

歸檔當前目錄下的內容,並且制定輸出檔案

% find . -print -depth | cpio -ov > tree.cpio

存檔整個目錄樹, find 命令可以將檔案列表提供給 cpio 。這將獲取當前目錄中的所有檔案,以及下面的目錄,並將它們放置在歸檔目錄 tree.cpio

% cpio -iv < directory.cpio

這將檢索存檔在檔案 directory.cpio 中的檔案,並將它們放在當前目錄中

% cpio -idv < tree.cpio

這將獲取存檔 tree.cpio 的內容,並將其解壓縮到當前目錄。

% find . -depth -print0 | cpio --null -pvd new-dir

將當前目錄的檔案和子目錄複製到一個名為 new-dir 的新目錄中

 

4 、例項

1 )將當前目錄歸檔

[root@localhost weijie]#  ls | cpio -o > mybak           // ls 的輸出定向到 cpio ,然後歸檔

[root@localhost weijie]#  ls

11.c  1.c  2.c 3.c  4.c  5.c 6.c  mybak

2 )從歸檔中提取檔案

[root@localhost weijie]#  cpio -i < mybak                   // 從歸檔中提取

cpio:  未建立  11.c :已有更新或同樣新的版本存在

cpio:  未建立  5.c :已有更新或同樣新的版本存在

cpio:  未建立  6.c :已有更新或同樣新的版本存在

cpio:  未建立  mybak :已有更新或同樣新的版本存在

[root@localhost weijie]#  ls

11.c  1.c  2.c  3.c  4.c  5.c  6.c  mybak

3 )拷貝檔案

[root@localhost weijie]#  cat list.c 

1.c

2.c

3.c

[root@localhost weijie]#  cpio -p bak/ < list.c          // list.c 中的內容當做檔案列表,然後拷貝到 bak 目錄

cpio:  忽略空行

[root@localhost weijie]#  ls bak/

1.c  2.c  3.c






做了一個Linux學習的平臺,目前出來一個雛形,各位可以參考使用
連結: https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ   密碼:n7bk

Linux基礎命令---cpio

4.gif   (1.3 MB, 下載次數: 0)

下載附件

2018-11-21 20:15 上傳


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