Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47368
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 127
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-07 12:53
文章存档

2014年(8)

我的朋友

分类: LINUX

2014-04-02 22:26:41

cpio [选项] < 文件名或者设备名 
cpio -ovcB > [file|device] <==
备份
cpio -ivcdu < [file|device] <==
还原

cpio -ivct < [file|device] <==查看

[功能

cpio命令是通过重定向的方式将文件进行打包备份,可以备份任何东西,包括装置设备档案,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件;不过cpio有个大问题,那就是cpio不会主动的去找档案来备份,一般来说,cpio得要配合类似findls等可以找到文件名的指令来告知cpio要备份的数据在哪里。 

[描述

选项说明:详细选项说明参看下表 

选项 含义 

-o 将数据拷贝打包成文件或者将数据输出到档案或装置上。 

-i 将打包文件解压或者将设备上的备份还原到系统。 

-t 查看cpio打包的文件内容或者输出到设备上的文件内容,需要配合-i选项。 

-v 显示打包过程中的文件名称。 

-d cpio还原文件的过程中,自动的建立相应的目录。 

-c 一种较新的portable format存储方式。 

-B 让默认的Blocks可以增大到5120 bytes,默认Blocks512 bytes,这样做的好处是可以让大档案的存储速度加快。 
-u
自动的将较新的档案覆盖较旧的档案。

提示:上述的选项与指令中没有指定需要备份数据的部分,需要配合find等指令通过管道送给cpiocpio会将数据整个显示到屏幕上,然后通过将屏幕上数据重导向(> )一个新档案,还原就是将备份文件读进来cpio<)进行处理。

( = 1.1 \* Arabic 1.1)find 绝对路径

( = 1.1 \* Arabic 1.2)find相对路径【当前路径】

( = 1.1 \* Arabic 1.3)find相对路径

(2.1)find 绝对路径备份/boot

(2.2)find 相对路径备份/boot

(2.3)find 相对路径备份/boot

查看三个备份文件属性

(3.1)还原绝对路径备份/boot的文件 文件会还原到绝对路径下

(3.2)还原相对路径(.当前路径)备份/boot的文件还原到当前路径下

原来/boot下的目录档案增加到了/root目录下

(3.1)还原相对路径(当前路径)备份boot还原到当前路径下,增加boot目录

查看cpio文件

注意 

1)cpio还原路径,如果cpio在打包备份的时候用的是绝对路径,那么在恢复的时候会自动恢复到这些绝对路径下,同理,如果在打包备份用的是相对路径,还原时也将恢复到相对路径下。【相对路径第三种方式较好】 

2)cpio无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别读取,而find命令的输出刚好做到了这点,因此,cpio命令一般和find命令配合使用。 

3)cpio恢复的时候不会自动覆盖同名文件。 

4)不会创建目录而是直接解压到当前文件夹。 

附录:*etc目录备份: 

find ./etc -print |cpio -ov >etc.cpio 

*要恢复文件的时候 

#cpio -idv

*只是查看etc.cpio文件,可以使用 

# cpio -tv

这样显示得是将要恢复得文件得名称。 

另:系统里面已经含有一个使用cpio建立的档案,那就是/boot/initrd-xxx这个档案,对于Fedora14版本文件名为initramfs-2.6.35.6-45.fc14.i686.img

# = 1 \* GB3 使用file命令查看文件格式

# = 2 \* GB3 改名增加扩展名,解压缩查看文件

# = 3 \* GB3 开始使用cpio解开此档案:

[2现在,内核刚刚启动的时候,会事先挂一个initrd内存文件系统,这个initrd文件系统镜像可以由cpio制作。参见内核源码文档initrd.txt. 

*例如我有一个非常简单的文件系统rootfs.制作镜像方法如下: 

$cd rootfs 

$find . | cpio -c -o -v |gzip -9 -n >../ramdisk.img 

这样,父目录下会生成一个ramdisk.img压缩文件系统镜像。 

*将镜像解压恢复成文件系统的命令: 

$mkdir rootfs 

$cp ramdisk.img rootfs 

$cd rootfs 

$mv ramdisk.img ramdisk.img.gz 

$gunzip ramdisk.img.gz 

$cpio -i

$rm ramdisk.img 

这样,当前目录下就是原来rootfs中的内容了。

阅读(1667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~