首頁 運維 linux運維 linux cpio三種操作模式是什麼

linux cpio三種操作模式是什麼

Feb 09, 2023 am 11:52 AM
linux

cpio三種操作模式:1、copy-out模式,用於打包備份文件,會把文件複製到歸檔包中;2、copy-in模式,用於從歸檔包文件中恢復文件,可以從標準輸入讀入歸檔包,將歸檔包中的文件讀出或列出歸檔包裡的內容;3、copy-pass模式,用於把文件從一棵目錄樹複製到另一棵。

linux cpio三種操作模式是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

在linux中,cpio是一種資料備份與復原工具,用於建立cpio檔案文件,從檔案檔案中抽取文件,或把文件從一個目錄複製到另外一個目錄。產生的檔案檔案可以是一個磁碟文件,也可以寫入磁帶等資料​​流媒體。 cpio不僅能夠處理二進位與ASCII頭資料格式的cpio檔案文件,也能夠讀取和寫入各種tar格式的檔案檔案。為了保持相容,如果不特別指定,cpio通常仍然會建立二進位頭資料格式的檔案檔案。

cpio類似tar指令,可以將檔案複製打包到cpio或tar格式的歸檔包檔中,也可以從歸檔包檔中複製檔。歸檔包文件可以是磁碟上的文件, 也可以是磁帶等設備文件。

從檔案文件中抽取文件時,cpio指令能夠自動辨識讀取的是哪一種檔案文件,而且也能讀取在不同的系統中所建立的具有不同位元組順序的檔案檔。

cpio有三種操作模式,如下表所示:

#cpio三種操作模式
cpio三種操作模式
作業模式 模式說明
#copy-out模式 #該模式用於打包備份檔案。
               cpio把檔案複製到歸檔包中。 cpio要打包的檔案名稱來自標準輸入,它從標準輸入取得檔案名稱列表,一行一個。                一般透過管道將標準輸入重新導向至另一個指令的輸出。最常見的方法是使用find指令產生檔名清單,然後透過管道傳送給cpio,                這樣cpio就可以知道要備份的資料來自哪裡。需要在find後面加上-depth選項, 減少因為進入沒有存取權限的目錄而造成的麻煩。
               cpio預設將歸檔包檔案寫到標準輸出,所以需要用重定向符號>或>>將歸檔包資料輸出重新導向至一個檔案中。
copy-in模式 此模式用於從歸檔包檔案中復原檔案。
               cpio它從標準輸入讀入歸檔包,將歸檔包中的文件讀出或列出歸檔包中的內容。 cpio將從歸檔包中讀出的資料寫到標準輸出。
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。

cpio的某些選項只能用在對應的操作模式上,常用的指令選項格式如下所示:

[root@initroot ~]# cpio -ovcB > [file|device] #备份
[root@initroot ~]# cpio -ivcdu < [file|device] #还原
[root@initroot ~]# cpio -ivct < [file|device] #察看
登入後複製

copy-out模式(備份)用到的選項與參數:

  • -o :將資料copy輸出到檔案或裝置上

  • -B:讓預設的Blocks可以增加至5120bytes ,預設是512bytes!這樣的好處是可以讓大檔案的儲存速度加快(請參考i-nodes 的觀念)

# copy-in模式(還原)用到的選項與參數:

  • -i :將資料自檔案或裝置copy出來系統當中

  • -d :自動建立目錄!使用cpio所備份的資料內容不見得會在同一層目錄中,因此我們必須要讓cpio在還原時可以建立新目錄,此時就得要-d選項的幫助!

  • -u :自動的將較新的檔案覆寫較舊的檔案!

  • -t :需配合-i選項,可用在"察看"以cpio 建立的檔案或裝置的內容

#通用的選項與參數:

  • # #-v :讓儲存的過程中檔案名稱可以在螢幕上顯示

  • -c :一種較新的portable format方式儲存

#cpio從標準輸入讀入數據,將處理過的數據輸出到標準輸出,所以cpio需要配合管道和重定向符號使用。

找出/boot目錄下的所有檔案,備份到/tmp/boot.cpio歸檔包檔案中:

[root@initroot ~]# cd /
[root@initroot /]# find boot -print
boot
boot/grub
boot/grub/gfxblacklist.txt
boot/grub/unicode.pf2
boot/grub/locale
...省略...
登入後複製

find指令可以找出boot目錄下所有的文件,包括文件與目錄!注意這裡的boot為相對路徑,而不是絕對路徑!

[root@initroot /]# find boot | cpio -ocvB > /tmp/boot.cpio

[root@initroot /]# ls -lh /tmp/boot.cpio
-rw-r--r-- 1 peter peter 193M Feb 10 15:59 /tmp/boot.cpio
[root@initroot ~]# file /tmp/boot.cpio
/tmp/boot.cpio: ASCII cpio archive (pre-SVR4 or odc)
登入後複製

使用find boot找出文件名,通過管道線|將輸出傳給cpio,通過重定向符號>將歸檔數據輸出到/tmp/boot.cpio檔! 上面find的參數boot為相對路徑,而不是絕對路徑,cpio不會對路徑做特殊處理,給的什麼資料它就接收什麼資料。所以如果這裡用絕對路徑的話,那麼find指令的輸出也是也是絕對路徑,cpio接收的也是絕對路徑, 那麼當從歸檔檔案複製檔案的時候,因為是絕對路徑,那麼複製出來的檔案就一定會覆蓋掉原本/boot目中的檔案! 這是非常危險的!所以再用find指令配合cpio打包檔案的時候,一定要用相對路徑。參考tar指令的-P選項!!

現在將歸檔包檔/tmp/boot.cpio解開到/root/目錄下:

[root@initroot ~]# cd ~
[root@initroot ~]# cpio -idvc < /tmp/boot.cpio
[root@initroot ~]# ls -al /root/boot
登入後複製

可以看出/root/boot與/boot的內容一模一樣!

cpio可以將系統的資料完整的備份到磁帶機上:

[root@initroot ~]# find / | cpio -ocvB > /dev/st0
登入後複製

從磁帶機還原資料:

[root@initroot ~]# cpio -idvc < /dev/st0
登入後複製

cpio可以備份任何的檔案, 包括/dev下的設備檔案!是非常重要的指令!

cpio必需要配合其他的程式,例如find來建立檔名,所以cpio與管線指令及資料流重導向有非常密切的關係!

事實上/boot目錄下的/boot/initramfs-xxx或/boot/initrd.img-xxx-generic檔案也是cpio歸檔包檔。

我們可以將該檔案解開到/tmp/initramfs目錄下看看這個歸檔包中都有哪些檔案:

[root@initroot ~]# file initrd.img-4.15.0-65-generic
initrd.img-4.15.0-65-generic: ASCII cpio archive (SVR4 with no CRC)
[root@initroot ~]# mkdir /tmp/initramfs
[root@initroot ~]# cd /tmp/initramfs
[root@initroot initramfs]# cpio -idv < /boot/initrd.img-4.15.0-65-generic
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
56 blocks
登入後複製

注意這裡將-c選項去掉,如果加上- c選項的話,cpio會出現如下提示:

cpio: premature end of file
登入後複製
將-c選項去掉就可以成功解壓縮歸檔包檔了!

相關推薦:《

Linux影片教學

以上是linux cpio三種操作模式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

See all articles