cpio的用法
cpio
这个命令挺有趣的,因为 cpio 可以备份任何东西,包括装置设备文件。不过 cpio 有个大问题, 那就是 cpio 不会主动的去找文件来备份!啊!那怎办?所以罗,一般来说, cpio 得要配合类似 find 等可以找到档名的命令来告知 cpio 该被备份的数据在哪里。
[root@www ~]# cpio -ovcB > [file|device] <==备份 [root@www ~]# cpio -ivcdu < [file|device] <==还原 [root@www ~]# cpio -ivct < [file|device] <==察看 备份会使用到的选项与参数: -o :将数据 copy 输出到文件或装置上 -B :让默认的 Blocks 可以添加至 5120 bytes ,默认是 512 bytes ! 这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念) 还原会使用到的选项与参数: -i :将数据自文件或装置 copy 出来系统当中 -d :自动创建目录!使用 cpio 所备份的数据内容不见得会在同一层目录中,因此我们 必须要让 cpio 在还原时可以创建新目录,此时就得要 -d 选项的帮助! -u :自动的将较新的文件覆盖较旧的文件! -t :需配合 -i 选项,可用在"察看"以 cpio 创建的文件或装置的内容 一些可共享的选项与参数: -v :让储存的过程中文件名称可以在萤幕上显示 -c :一种较新的 portable format 方式储存
你应该会发现一件事情,就是上述的选项与命令中怎么会没有指定需要备份的数据呢?还有那个大於 (>) 与小於 (<) 符号是怎么回事啊?因为 cpio 会将数据整个显示到萤幕上,因此我们可以透过将这些萤幕的数据重新导向 (>) 一个新的文件! 至於还原呢?就是将备份文件读进来 cpio (<) 进行处理之意!我们来进行几个案例你就知道啥是啥了!
范例:找出 /boot 底下的所有文件,然后将他备份到 /tmp/boot.cpio 去! [root@www ~]# find /boot -print /boot /boot/message /boot/initrd-2.6.18-128.el5.img ....以下省略.... # 透过这个 find 我们可以找到 /boot 底下应该要存在的档名!包括文件与目录 [root@www ~]# find /boot | cpio -ocvB > /tmp/boot.cpio [root@www ~]# ll -h /tmp/boot.cpio -rw-r--r-- 1 root root 16M Dec 17 23:30 /tmp/boot.cpio
我们使用 find /boot 可以找出档名,然后透过那条管线 (|, 亦即键盘上的 shift+\ 的组合), 就能将档名传给 cpio 来进行处理!最终会得到 /tmp/boot.cpio 那个文件喔!接下来让我们来进行解压缩看看。
范例:将刚刚的文件给他在 /root/ 目录下解开 [root@www ~]# cpio -idvc < /tmp/boot.cpio [root@www ~]# ll /root/boot # 你可以自行比较一下 /root/boot 与 /boot 的内容是否一模一样!