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 |
?
轉載于:https://blog.51cto.com/9888479/2330267
總結
以上是生活随笔為你收集整理的Linux基础命令---cpio的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 近60年来首次!诺基亚更换品牌形象并推出
- 下一篇: 性能狂飙!红魔8 Pro系列今日再次开售