CPIO mempunyai tiga mod pengendalian: 1. Mod salin keluar, digunakan untuk membungkus fail sandaran dan menyalin fail ke pakej arkib 2. Mod salin masuk, digunakan untuk memulihkan fail daripada fail pakej arkib , anda boleh membaca pakej arkib daripada input standard, membaca fail dalam pakej arkib atau menyenaraikan kandungan pakej arkib 3. Mod salinan-pas digunakan untuk menyalin fail dari satu pepohon direktori yang lain;
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Di Linux, cpio ialah alat sandaran dan pemulihan data yang digunakan untuk mencipta fail arkib cpio, mengekstrak fail daripada fail arkib atau menyalin fail dari satu direktori ke direktori lain. Fail arkib yang dijana boleh menjadi fail cakera, atau ia boleh ditulis ke medium penstriman data seperti pita. cpio bukan sahaja boleh memproses fail arkib cpio dalam format data pengepala binari dan ASCII, tetapi juga boleh membaca dan menulis fail arkib dalam pelbagai format tar. Untuk mengekalkan keserasian, cpio biasanya masih mencipta fail arkib dalam format data pengepala binari melainkan dinyatakan sebaliknya.
cpio adalah serupa dengan arahan tar Ia boleh menyalin dan membungkus fail ke dalam fail pakej arkib dalam format cpio atau tar, atau menyalin fail daripada fail pakej arkib. Fail pakej arkib boleh menjadi fail pada cakera atau fail peranti seperti pita.
Apabila mengekstrak fail daripada fail arkib, arahan cpio boleh mengenal pasti secara automatik fail arkib yang sedang dibaca dan juga boleh membaca fail arkib dengan susunan bait berbeza yang dibuat dalam sistem yang berbeza.
cpio mempunyai tiga mod pengendalian, seperti yang ditunjukkan dalam jadual berikut:
cpio三种操作模式 | |
---|---|
操作模式 | 模式说明 |
copy-out模式 | 该模式用于打包备份文件。 cpio把文件复制到归档包中。cpio要打包的文件名来自标准输入,它从标准输入获得文件名列表,一行一个。 一般通过管道来将标准输入重定向到另一个命令的输出。最常见的方法是使用find命令生成文件名列表,然后通过管道传送给cpio, 这样cpio就可以知道要备份的数据来自哪里。需要在find后面加上-depth选项, 减少因为进入没有访问权限的目录而引起的麻烦。 cpio默认把归档包文件写到标准输出,所以需要用重定向符号>或者>>将归档包数据输出重定向到一个文件中。 |
copy-in模式 | 该模式用于从归档包文件中恢复文件。 cpio它从标准输入读入归档包,将归档包中的文件读出或者列出归档包里的内容。cpio将从归档包中读出的数据写到标准输出。 |
copy-pass模式 | cpio把文件从一棵目录树复制到另一棵, 它结合了 copy-in 和 copy-out 的操作, 但不使用归档包。 cpio从标准输入读取欲复制的文件名列表; 目标目录作为非选项的命令行参数给出。 |
cpio menyokong format arkib berikut: binari, ASCII lama, ASCII baharu, crc, binari HPUX, ASCII lama HPUX, tar lama dan tar POSIX.1.
Sesetengah pilihan cpio hanya boleh digunakan dalam mod pengendalian yang sepadan Format pilihan arahan yang biasa digunakan adalah seperti berikut:
[root@initroot ~]# cpio -ovcB > [file|device] #备份 [root@initroot ~]# cpio -ivcdu < [file|device] #还原 [root@initroot ~]# cpio -ivct < [file|device] #察看
mod salin keluar (. Pilihan dan parameter yang digunakan untuk sandaran):
-o: Output salinan data ke fail atau peranti
-B : Membolehkan Blok lalai untuk ditingkatkan kepada 5120bait, lalai ialah 512bait Kelebihan ini ialah ia boleh mempercepatkan penyimpanan fail besar (sila rujuk konsep i-nod)
Pilihan dan parameter yang digunakan dalam mod salin masuk (pulihkan):
-i: Salin data daripada fail atau peranti keluar daripada sistem
-d: Buat direktori secara automatik. Data yang disandarkan menggunakan cpio mungkin tidak berada dalam direktori yang sama, jadi kami mesti membenarkan cpio membuat direktori baharu semasa pemulihan Bantuan diperlukan untuk pilihan
-u: Gantikan fail lama secara automatik dengan fail yang lebih baharu
-t: Memerlukan kerjasama - Pilihan i boleh! digunakan untuk "melihat" kandungan fail atau peranti yang dibuat dengan cpio
Pilihan dan parameter biasa:
-v: Benarkan nama fail dipaparkan pada skrin semasa proses menyimpan
-c: Kaedah storan format mudah alih yang lebih baharu
cpio membaca data daripada input standard dan mengeluarkan data yang diproses kepada output standard, jadi cpio perlu digunakan dengan paip dan simbol ubah hala.
Cari semua fail dalam direktori /boot dan sandarkannya dalam fail arkib /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 ...省略...
Arahan find boleh mencari semua fail dalam but Direktori. Termasuk fail dan direktori! Sila ambil perhatian bahawa but di sini ialah laluan relatif, bukan laluan mutlak
[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)
Gunakan but cari untuk mencari nama fail, hantarkan output ke cpio melalui saluran paip |, dan lulus simbol ubah hala > ;Keluarkan data yang diarkibkan ke fail /tmp/boot.cpio But parameter yang ditemui di atas ialah laluan relatif, bukan laluan mutlak Ia tidak akan menerima apa sahaja data diberikan. Jadi jika laluan mutlak digunakan di sini, maka output arahan find juga adalah laluan mutlak, dan apa yang diterima cpio juga adalah laluan mutlak Kemudian apabila fail disalin dari fail arkib, kerana ia adalah laluan mutlak, fail yang disalin pasti akan ditimpa Padamkan fail dalam direktori asal /boot Ini sangat berbahaya, apabila menggunakan arahan cari dengan cpio untuk membungkus fail, pastikan anda menggunakan laluan relatif. Rujuk kepada pilihan -P bagi arahan tar!!
Sekarang nyahzip fail pakej arkib /tmp/boot.cpio ke direktori /root/:
[root@initroot ~]# cd ~ [root@initroot ~]# cpio -idvc < /tmp/boot.cpio [root@initroot ~]# ls -al /root/boot
Anda boleh lihat / root/ Kandungan but dan /boot adalah sama persis
cpio boleh menyandarkan sepenuhnya data sistem ke pemacu pita:
[root@initroot ~]# find / | cpio -ocvB > /dev/st0
Pulihkan data daripada pemacu pita:
[root@initroot ~]# cpio -idvc < /dev/st0
cpio boleh menyandarkan mana-mana fail, termasuk fail peranti di bawah /dev Ia adalah arahan yang sangat penting
cpio mesti bekerjasama dengan program lain, seperti mencari untuk mencipta nama fail! jadi arahan cpio dan saluran paip serta pengalihan aliran data sangat berkait rapat!
Malah, fail /boot/initramfs-xxx atau /boot/initrd.img-xxx-generik dalam direktori /boot juga merupakan fail arkib cpio.
Kami boleh menyahzip fail ke direktori /tmp/initramfs untuk melihat fail yang terdapat dalam pakej arkib ini:
[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
Perhatikan bahawa pilihan -c dialih keluar di sini Jika anda memilih pilihan -c, cpio akan memaparkan gesaan berikut:
cpio: premature end of file
Alih keluar pilihan -c dan anda boleh berjaya menyahmampat fail arkib!
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah tiga mod operasi linux cpio. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!