Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5787050
  • 博文数量: 409
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 8273
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 19:15
个人简介

qq:78080458 学习交流群:150633458

文章分类

全部博文(409)

文章存档

2019年(127)

2018年(130)

2016年(20)

2015年(60)

2014年(41)

2013年(31)

分类: LINUX

2018-12-14 08:50:11

cpio

从归档中复制文件,或者复制文件到归档中。此命令的适用范围:RedHatRHELUbuntuCentOSSUSEopenSUSEFedora

Cpio命令有三种工作模式:

1copy-out modecpio指令将文件复制到归档。它读取标准输入上的文件名列表(每行一个),将归档包写到标准输出。

2copy-in modecpio指令从归档中复制文件,从标准输入读取归档包。

3cpio-pass mode,从目录树复制文件到另一个目录,它从标准输入中读取要复制的文件列表。

 

1、语法

cpio -o namelist  > archive 

cpio  -i  <  archive

cpio  -p  dst-dir < namelist

 

2、选项列表

选项

说明

-? | --help

帮助信息

--version

显示命令版本信息

主操作模式

 

-i | --extract

从包中提取文件,copy-in模式

-o | --create

创建包,copy-out模式

-p | --pass-through

运行copy-pass模式

-t | --list

打印输入内容列表

-l | --list

对于每一个压缩的文件,列出压缩文件大小、解压大小、压缩比列、压缩前的文件名字

应用在所有模式的选项

 

-B

设置IO块的大小为5120字节

-c

使用老式跨平台的归档格式

-f

仅拷贝不匹配任意给定模式的文件

-F

用文件名代替标准输入和输出

-n | --numeric-uid-gid

在内容列表的详细信息中显示uidgid

--quite

不打印以拷贝的块数

-v | --verbose

详细信息

-V | -dot

每处理一个文件就打印一个“.

应用于copy-in的徐昂想

 

-b | --swap

 

-r | --rename

交互式重命名

-E

把指定文件的内容当做匹配字符串

应用于copy-out的选项

 

-A | --append

追加到文档的结尾

-O

使用包文件名,而不是标准输入输出

应用于copy-pass的选项

 

-l | --link

在执行时尽可能创建链接,而不是复制文件

应用于copy-incopy-out

 

--absolute-filenames

文件名不出去文件系统前缀

--no-absolute-filenames

当前目录创建所有文件

应用于copy-outcopy-pass

 

-0 | --null

输入文件名以null字符结尾

-a | --reset-access-time

文件读取后,还原文件的访问时间

-I

从文件读入

-R | --owner

设置所有文件的组合用户信息

应用于copy-incopy-pass

 

-d

必要时创建目录

-m

创建文件是,保留文件修改时间属性

-u

无条件覆盖

 

3、例子代码

% ls | cpio -ov > directory.cpio

归档当前目录下的内容,并且制定输出文件

% find . -print -depth | cpio -ov > tree.cpio

存档整个目录树,find命令可以将文件列表提供给cpio。这将获取当前目录中的所有文件,以及下面的目录,并将它们放置在归档目录tree.cpio

% cpio -iv < directory.cpio

这将检索存档在文件directory.cpio中的文件,并将它们放在当前目录中

% cpio -idv < tree.cpio

这将获取存档tree.cpio的内容,并将其解压缩到当前目录。

% find . -depth -print0 | cpio --null -pvd new-dir

将当前目录的文件和子目录复制到一个名为new-dir的新目录中

 

4、实例

1)将当前目录归档

[root@localhost weijie]# ls | cpio -o > mybak           //ls的输出定向到cpio,然后归档

[root@localhost weijie]# ls

11.c  1.c  2.c 3.c  4.c  5.c 6.c  mybak

2)从归档中提取文件

[root@localhost weijie]# cpio -i < mybak                   //从归档中提取

cpio: 未创建 11.c:已有更新或同样新的版本存在

cpio: 未创建 5.c:已有更新或同样新的版本存在

cpio: 未创建 6.c:已有更新或同样新的版本存在

cpio: 未创建 mybak:已有更新或同样新的版本存在

[root@localhost weijie]# ls

11.c  1.c  2.c  3.c  4.c  5.c  6.c  mybak

3)拷贝文件

[root@localhost weijie]# cat list.c 

1.c

2.c

3.c

[root@localhost weijie]# cpio -p bak/ < list.c          //list.c中的内容当做文件列表,然后拷贝到bak目录

cpio: 忽略空行

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