Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514726
  • 博文数量: 484
  • 博客积分: 10145
  • 博客等级: 上将
  • 技术积分: 5805
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 18:34
文章分类

全部博文(484)

文章存档

2011年(52)

2010年(107)

2009年(287)

2008年(38)

我的朋友

分类: LINUX

2010-05-27 22:47:52

http://hi.baidu.com/9812658/blog/item/8ada5e0187890183d53f7c65.html

使用cpio命令进行备份数据(6)
2010-03-01 13:08

-H, --format=FORMAT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用归档格式 FORMAT

有效的格式在下面列出, 大小写均可. "copy-in" 模 式的缺省动作是自动检测归档格式, "copy-out" 的缺省格式是 "bin"

bin

老式的 binary 格式

odc

老式的 (POSIX.1) 跨平台格式

newc

新型 (SVR4) 跨平台格式, 支 持大于 65536 i节点的文件系统

crc

新型 (SVR4) 跨平台格式, 并 且计算校验和

tar

老式的 tar 格式

ustar

POSIX.1 tar 格式, 也能识别 GNU tar 归档文件, 它们相似但不全相同

hpbin

HP UNIX 上的cpio使用的老式的 binary 格式。(用独特的方法储存设备文件)

Hpodc

HP UNIX 上的 cpio 使用的跨平台格式。 (用 独特的方法储存设备文件)

-M, --message=STRING

当备份介质(例如 磁带或软盘) 到达卷尾时, 显示一条消息, 提醒用户插入下一卷。如果 MESSAGE 包含字符串 "%d", 它被替换成当前卷号 ( 1 开始)

-n, --numeric-uid-gid

以详细方式 (verbose) 显示内容时, 用数字 显示 UID GID, 而不是翻译成名称

--quiet

不显示复制的块数

--rsh-command=COMMAND

使用远程的命令来代替rsh

-v, --verbose

列出处理的文件, 加上 -t 选项可以列出一个 'ls -l' 风格的列表。在一个归档包内容的详细列表 (verbose) , 如 果本地系统不存在归档文件的用户和用户组名称, 它们将被替换成其数字 UIDGID 对应于本地系统的用户和用户组名称

-V, --dot

每处理一个文件, 显示一个 "."


===================================================================

五、cpio实例讲解

1、常用操作模式


(1)备份:cpio -ocvB    > [ file | device ]
(2)还原:cpio -ivcdu   >
[ file | device ]
(3)查看:cpio -ivct      >
[ file | device ]


2、相关例子

1)cpio-out模式

(1)找出当前目录下的所有文件,然后将它们打包进一个cpio压缩包文件

find . -depth | cpio -ocvB > backup.cpio 或  find . -depth -print | cpio -ocvB > backup.cpio
注意:cpio 建立起来的归档文件包括文件头和文件数据两部分。文件头包含了对应文件的信息。如文件的 UID,GID,连接数以及文件大小等。其好处是可以保留硬连接,在恢复时默认情况下保留时间戳,无文件名称长度的限制

(2)将当前目录下名为inittab文件加入initrd.cpio包中
命令1:find . -name inittab -depth | cpio -ovcB -A -F initrd.cpio 
命令2:find . -name inittab -depth | cpio -ovcB -A -O initrd.cpio
命令3:find . -name inittab -depth | cpio -ovcB -A --quiet  -O  initrd.cpio(--quit:表示不显示复制块)



-----------------------------------------------------------------------------------------------------------------------

2)cpio-in模式

(1)查看cpio压缩包中的文件列表清单
cpio --absolute-filenames -vtc < boot.cpio(不忽略文件列表清单的文件名最前面的“/")
cpio --no-absolute-filenames -vtc < boot.cpio(默认是忽略文件列表清单的文件中最前面的“/",或者使用 --no-absolute-finenames选项作用也一样)




(2)从cpio压缩包中的解压出文件
cpio --absolute-filenames -icvu < test.cpio(解压到原始位置,解压出来的每个文件的时间属性改为当前时间)
cpio --absolute-filenames -icvum < test.cpio(解压到原始位置,同时不改变解压出来的每个文件的时间属性)

cpio  -icvu < test.cpio(解压到当前目录下)或者 cpio  -icvum < test.cpio


(3)在解包cpio时,对解包出来的文件进行交互的更名
cpio -icvdu -r < grub.cpio

注意:上图中的./ssh改为./ssh_nice_good_bad

(4)将cpio包中的文件解压并输入标准输出
 cpio -icvu --to-stdout < grub.cpio
注意:既然解压到标准输出,所以就不能使用-d参数了

-----------------------------------------------------------------------------------------------------------------------

3)cpio-out模式

(1)复制文件并更改文件的属主与属组
 find .  -depth | cpio -R ruanxi:ruanxi -pL  /backup/


-----------------------------------------------------------------------------------------------------------------------

4)分析系统目录/boot下的initrd-2.6.30.9.img文件

[root@Server tmp]# file /boot/initrd-2.6.30.9.img
/boot/initrd-2.6.30.9.img: gzip compressed data, from Unix, last modified: Fri Nov 13 22:12:38 2009, max compression
#由上面可知道,
initrd-2.6.30.9.img它是一个gzip文件
-------------------------------------------------------------------
[root@Server tmp]# cp /boot/initrd-2.6.30.9.img  ./initrd.img.gz
[root@Server tmp]# gzip -d initrd.img.gz
#通过gzip指令解压出文件
-------------------------------------------------------------------
[root@Server tmp]# file initrd.img
initrd.img: ASCII cpio archive (SVR4 with no CRC)
#可知解压出的文件是一个cpio压缩包
[root@Server tmp]# cpio -ivcdu < initrd.img
#最后再使用cpio指令解

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