【转】linux下cpio命令使用
转自:http://www.51testing.com/html/32/498132-816949.html
功能说明:备份文件。
补充说明:cpio是用来建立,还原备份档的工具程序,它可以加入,解开cpio,img或tra备份档内的文件。
cpio文件的类型判断:
[root@localhost test]# file test.cpio
test.cpio: ASCII cpio archive (SVR4 with no CRC)
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:表示不显示复制块)
cpio --absolute-filenames -vtc < boot.cpio(不忽略文件列表清单的文件名最前面的“/")
cpio --no-absolute-filenames -vtc < boot.cpio(默认是忽略文件列表清单的文件中最前面的
(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
(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指令解包
posted on 2016-03-21 23:05 Andy-tester 阅读(6185) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!