久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux cpio有哪些操作模式

205次閱讀
沒有評論

共計 3530 個字符,預計需要花費 9 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 linux cpio 有哪些操作模式的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

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

在 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/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 打包文件的時候,一定要用相對路徑。

現在將歸檔包文件 /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 cpio 有哪些操作模式”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-12發表,共計3530字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 新闻| 启东市| 澄城县| 杭州市| 精河县| 白山市| 阿拉尔市| 金湖县| 辛集市| 沿河| 柯坪县| 曲靖市| 康乐县| 慈利县| 普陀区| 景宁| 金乡县| 柘荣县| 鄯善县| 莱芜市| 专栏| 临邑县| 留坝县| 东阳市| 长武县| 乐清市| 惠来县| 阿城市| 清远市| 喀喇| 英吉沙县| 福安市| 新密市| 宁都县| 河曲县| 新巴尔虎右旗| 甘德县| 三原县| 衡南县| 浙江省| 宝坻区|