当前位置: 首页 > news >正文

Linux shell编程学习笔记79:cpio命令——文件和目录归档工具(下)

Linux shell编程学习笔记78:cpio命令——文件和目录归档工具(上)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Purpleendurer/article/details/142095476?spm=1001.2014.3001.5501中,我们研究了 cpio命令 的功能、格式、选项说明 以及 cpio命令的三种模式,现在我们来通过一些实例来实践一下。

1 应用实例

1.1 创建演示文件和目录


我们使用 echo 命令和输出重定向创建文件f1 和 f2,使用mkdir命令创建目录d1

[purpleendurer @ bash ~] echo "f1" > f1
[purpleendurer @ bash ~] echo "f2" > f2
[purpleendurer @ bash ~] mkdir d1
[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~]

1.2 创建归档文件

1.2.1 将当前目录的内容归档

使用命令

ls | cpio -o > p.cpio

来将当前目录的内容归档到文件p.cpio。

 命令选项说明

  • -o或--create  创建包 (运行 copy-out 模式)
[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls | cpio -o > p.cpio
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  p.cpio
[purpleendurer @ bash ~] 

 如果我们想在归档时看到已归档的文件名称,可以使用-v 或 --verbose 选项,即:

ls | cpio -ov > p.cpio

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls | cpio -ov > p.cpio
Code
d1
f1
f2
p.cpio
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  p.cpio
[purpleendurer @ bash ~] 

1.2.2 将以字母f开头的文件归档

我们可以使用命令

ls f* | cpio -ov > f.cpio

find f* | cpio -ov > f.cpio

将以字母f开头的文件归档。

[purpleendurer @ bash ~] find f*
f1
f2
[purpleendurer @ bash ~] find f* | cpio -ov > f.cpio
f1
f2
f.cpio
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  f.cpio  p.cpio
[purpleendurer @ bash ~] 

1.2.3 将标准输入指定的文件归档

 命令格式:

cpio -o > 归档文件

注意:输入所有要归档文件名后,要按Ctrl+D结束。

例如,从标准输入指定将文件f1和目录d1归档到文件k.cpio:

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] cpio -o > k.cpio
f1
d1
1 block
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
d1
1 block
[purpleendurer @ bash ~] 

1.2.4 使用tar格式归档

cpio命令支持tar格式的归档文件,我们可以使用 -H选项来生成tar格式的归档文件。

例如,将当前目录下 f开头的文件和目录以tar格式归档到d.tar 的命令是

ls f* | cpio -ov -H tar > f.tar

选项说明:

  • -o或--create:创建包 (运行 copy-out 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -t, --list:将输入内容以列表形式打印
[purpleendurer @ bash ~] ls f*
f1  f2
[purpleendurer @ bash ~] ls f* | cpio -ov -H tar > f.tar
f1
f2
6 blocks
[purpleendurer @ bash ~] cpio -t < f.tar
f1
f2
5 blocks
[purpleendurer @ bash ~] 

1.2 查看归档文件的内容

我们可以使用命令

cpio -t < 归档文件

 cpio --list < 归档文件

来查看归档文件的内容。

选项说明:

  • -t, --list:将输入内容以列表形式打印

例如,查看归档文件 f.cpio 和 p.cpio 的内容。

[purpleendurer @ bash ~] ls
Code  d1  f1  f2  f.cpio  p.cpio
[purpleendurer @ bash ~] cpio -t < f.cpio
f1
f2
f.cpio
1 block
[purpleendurer @ bash ~] cpio -t < p.cpio
Code
d1
f1
f2
p.cpio
1 block
[purpleendurer @ bash ~] 

 1.3  向归档文件追加文件

例如,将文件f2追加到归档文件k.cpio文件的命令是

 ls f2 | cpio -ovA -O k.cpio

命令选项说明

  • -o 或  --create:创建包 (运行 copy-out 模式)
  • -v 或  --verbose:详细列出已处理的文件
  • -O:使用包文件名而不是标准输出
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
d1
1 block
[purpleendurer @ bash ~] ls f2 | cpio -ovA -O k.cpio
f2
1 block
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
d1
f2
1 block
[purpleendurer @ bash ~] 

注意:向归档文件追加文件不能使用输出定向追加  >> 来实现

例如,我们想用输出重定向追加 来将目录d1追加到归档文件k.cpio:

[purpleendurer @ bash ~] rm k.cpio
[purpleendurer @ bash ~] ls f1 | cpio -o > k.cpio
1 block
[purpleendurer @ bash ~] ls d1 | cpio -o >> k.cpio
1 block
[purpleendurer @ bash ~] cpio -t < k.cpio
f1
1 block
[purpleendurer @ bash ~] 

命令执行的结果是d1未能追加到归档文件k.cpio。

1.4 从归档文件进行还原

1.4.1 从归档文件进行还原,并列出详细信息

例如,我先使用命令 ls f? | cpio -ov  > f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。

然后我们使用命令 rm  f? 删除当前目录下以f开头,文件名长度为2个字符的文件。

接着我便使用命令

cpio -iv < f.cpio

来还原。

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls f? | cpio -ov  > f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] cpio -t < f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] rm f?
[purpleendurer @ bash ~] ls
Code  d1  f.cpio
[purpleendurer @ bash ~] cpio -iv < f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] ls
Code  d1  f1  f2  f.cpio
[purpleendurer @ bash ~] 

如果我们不想使用输入重定向来指定所用的归档文件f.cpio,还可以使用-I 选项来指定归档文件f.cpio。

命令:

cpio -iv -I f.cpio

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -I, --file=ARCHIVE:从ARCHIVE文件读取归档文件,而不是标准输入

 

[purpleendurer @ bash ~] cpio -iv -I f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] 

1.4.2 强制从归档文件中还原

所谓强制,就是还原时直接覆盖原有的文件。

例如,我们先使用命令 ls f? | cpio -ov -O f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。

然后强制从归档文件f.cpio还原文件,命令是:

cpio -ivu -I f.cpio

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -u, --unconditional:无条件覆盖所有文件
  • -I, --file=ARCHIVE:从ARCHIVE文件读取归档文件,而不是标准输入

 

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls f? | cpio -ov -O f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] cpio -ivu -I f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] 

1.4.3 从归档文件进行还原时进行反向匹配,指定不解压的文件

例如,我们先使用命令 ls f? | cpio -ov -O f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。

然后我们使用命令 rm  f? 删除当前目录下以f开头,文件名长度为2个字符的文件。

接着我们使用命令

cpio -iv -I f.cpio -f f1

从归档文件f.cpio还原文件名不是f1的文件。

选项说明:

  • -i, --extract:从包中提取文件 (运行 copy-in 模式)
  • -v 或 --verbose:详细列出已处理的文件
  • -I, --file=ARCHIVE:从ARCHIVE文件读取归档文件,而不是标准输入
  • -f, --nonmatching:仅拷贝不匹配任意给定的模式的文件

 

[purpleendurer @ bash ~] ls
Code  d1  f1  f2
[purpleendurer @ bash ~] ls f? | cpio -ov -O f.cpio
f1
f2
1 block
[purpleendurer @ bash ~] rm f?
[purpleendurer @ bash ~] ls
Code  d1  f.cpio
[purpleendurer @ bash ~] cpio -iv -I f.cpio -f f1
f2
1 block
[purpleendurer @ bash ~] ls
Code  d1  f2  f.cpio
[purpleendurer @ bash ~] 

http://www.lryc.cn/news/435851.html

相关文章:

  • 《 C++ 修炼全景指南:七 》优先级队列在行动:解密 C++ priority_queue 的实现与应用
  • 通信工程学习:什么是HSS归属用户服务器
  • mysql workbench 如何访问远程数据库
  • ICMAN触摸感应芯片方案
  • 面向个小微型企业的开源大模型(Qwen2等)商业化, AI部署成本分析与优化策略(费用分析、资源消耗分析)
  • pandas判断一列中存在nan值
  • 如何将 Electron 项目上架 Apple Store
  • R语言统计分析——功效分析2(t检验,ANOVA)
  • android 侧滑返回上一界面备忘
  • golang学习笔记18——golang 访问 mysql 数据库全解析
  • 苹果账号登录后端验证两种方式 python2
  • FlinkCDC 3.2.0 新增优点 Pattern Replacement in routing rules
  • 《 C++ 修炼全景指南:六 》深入探索 C++ 标准库中的 stack 与 queue 容器适配器
  • 高级java每日一道面试题-2024年9月07日-JVM篇-说一下类加载的执行过程?
  • 笔试强训day09
  • 软件测试中的黑盒测试方法,包括其定义、目的及主要步骤。
  • Shell脚本计算π的近似值
  • 进程间通信之消息队列
  • 人生苦短我用Python 5-xlwings自动调整表格
  • 移动跨平台框架Flutter详细介绍和学习线路分享
  • 线性代数基础:向量、矩阵、张量及其在机器学习中的应用详解
  • Dockerfile中的RUN、CMD、ENTRYPOINT指令区别
  • css grid布局属性详解
  • Tranformer分布式特辑
  • 【Moveit2官方教程】使用 MoveIt Task Constructor (MTC) 框架来定义和执行一个机器人任务
  • 使用docker配置wordpress
  • JVM字节码
  • python访问mysql
  • Java工具插件
  • Class3——Esp32|Thonny——网络连接主机-wifi连接(源代码带教程)