Linux基礎命令 cpio

2021-09-19 20:57:44 字數 3100 閱讀 2323

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的選項

追加到文件的結尾

-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,然後歸檔

1 塊[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:已有更新或同樣新的版本存在

1 塊[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.c2.c

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

cpio: 忽略空行

1 塊[root@localhost weijie]#ls bak/

1.c  2.c  3.c

Linux基礎命令 cpio

cpio 從歸檔中複製檔案,或者複製檔案到歸檔中。此命令的適用範圍 redhat rhel ubuntu centos suse opensuse fedora。cpio命令有三種工作模式 1 copy out mode,cpio指令將檔案複製到歸檔。它讀取標準輸入上的檔名列表 每行乙個 將歸檔包寫...

Linux基礎命令 cpio

cpio 從歸檔中複製檔案,或者複製檔案到歸檔中。此命令的適用範圍 redhat rhel ubuntu centos suse opensuse fedora。cpio命令有三種工作模式 1 copy out mode,cpio指令將檔案複製到歸檔。它讀取標準輸入上的檔名列表 每行乙個 將歸檔包寫...

Linux命令學習手冊 cpio命令

cpio 選項 檔名或者裝置名 cpio 選項 檔名或者裝置名 功能 cpio命令是通過重定向的方式將檔案進行打包備份,還原恢復的工具,它可以解壓以 cpio 或者 tar 結尾的檔案。描述 選項說明 詳細選項說明參看下表 選項 含義 o 將檔案拷貝打包成檔案或者將檔案輸出到裝置上。i 將打包檔案解...