Linux基礎命令—cpio
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,然後歸檔
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.c
2.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
從歸檔中複製檔案,或者複製檔案到歸檔中。此命令的適用範圍: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,然後歸檔
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.c
2.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基礎命令---cpioLinux
- linux cpio命令的使用Linux
- cpio 命令
- linux 命令 基礎Linux
- Linux基礎命令Linux
- Linux基礎命令---ftpLinuxFTP
- Linux基礎命令---apachectlLinuxApache
- Linux基礎命令---mysqlLinuxMySql
- Linux基礎命令—initLinux
- Linux基礎命令---ifcfgLinux
- Linux基礎命令—pgrepLinux
- Linux基礎命令---pgrepLinux
- Linux基礎命令—nohupLinux
- Linux基礎命令—killallLinux
- Linux基礎命令---suLinux
- Linux基礎命令---chshLinux
- Linux基礎命令---chfnLinux
- Linux基礎命令—splitLinux
- Linux基礎命令---trLinux
- Linux基礎命令---splitLinux
- Linux基礎命令---foldLinux
- Linux基礎命令—catLinux
- Linux基礎命令---catLinux
- Linux基礎命令---cpLinux
- Linux基礎命令---pasteLinuxAST
- Linux基礎命令---whereisLinux
- Linux基礎命令---whichLinux
- Linux基礎命令---sortLinux
- Linux基礎命令—sortLinux
- Linux基礎命令---cmpLinux
- Linux基礎命令---diffstatLinux
- Linux基礎命令—diffstatLinux
- Linux基礎命令---mvLinux
- Linux基礎命令---diffLinux
- Linux基礎命令---lsLinux
- Linux基礎命令—mkdirLinux
- Linux基礎命令---lnLinux
- Linux基礎命令—findfsLinux