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

 0 前言

在Linux系统中,除了tar命令,我们还可以使用cpio命令来进行文件和目录的归档。

1 cpio命令的功能,帮助信息,格式,选项和参数说明

1.1  cpio命令的功能

cpio 名字来自 "copy in, copy out"(拷进拷出),是Linux中用于处理归档文件(例如,.cpio或.tar文件)的工具,即从一个地方复制文件到另一个地方,同时保留文件的属性,如所有权、权限和时间戳。

使用cpio命令必须带参数或选项。

1.2 cpio命令的帮助信息

我们可以使用命令

cpio --help

或 

cpio --usage

来查看cpio命令的帮助信息。

1.2.1 bash下的cpio命令帮助信息

[purpleendurer @ bash ~] cpio --help
Usage: cpio [OPTION...] [destination-directory]
GNU `cpio' copies files to and from archivesExamples:# Copy files named in name-list to the archivecpio -o < name-list [> archive]# Extract files from the archivecpio -i [< archive]# Copy files named in name-list to destination-directorycpio -p destination-directory < name-listMain operation mode:-i, --extract              Extract files from an archive (run in copy-inmode)-o, --create               Create the archive (run in copy-out mode)-p, --pass-through         Run in copy-pass mode-t, --list                 Print a table of contents of the inputOperation modifiers valid in any mode:--block-size=BLOCK-SIZE   Set the I/O block size to BLOCK-SIZE * 512bytes-B                         Set the I/O block size to 5120 bytes-c                         Identical to "-H newc", use the new (SVR4)portable format.If you wish the old portable(ASCII) archive format, use "-H odc" instead.-C, --io-size=NUMBER       Set the I/O block size to the given NUMBER ofbytes--force-local          Archive file is local, even if its name containscolons-f, --nonmatching          Only copy files that do not match any of the givenpatterns-F, --file=[[USER@]HOST:]FILE-NAMEUse this FILE-NAME instead of standard input oroutput. Optional USER and HOST specify the userand host names in case of a remote archive-H, --format=FORMAT        Use given archive FORMAT-M, --message=STRING       Print STRING when the end of a volume of thebackup media is reached-n, --numeric-uid-gid      In the verbose table of contents listing, shownumeric UID and GID--quiet                Do not print the number of blocks copied--rsh-command=COMMAND  Use remote COMMAND instead of rsh-v, --verbose              Verbosely list the files processed-V, --dot                  Print a "." for each file processed-W, --warning=FLAG         Control warning display. Currently FLAG is one of'none', 'truncate', 'all'. Multiple optionsaccumulate.Operation modifiers valid only in copy-in mode:-b, --swap                 Swap both halfwords of words and bytes ofhalfwords in the data. Equivalent to -sS-r, --rename               Interactively rename files-s, --swap-bytes           Swap the bytes of each halfword in the files-S, --swap-halfwords       Swap the halfwords of each word (4 bytes) in thefiles--to-stdout            Extract files to standard output-E, --pattern-file=FILE    Read additional patterns specifying filenames toextract or list from FILE--only-verify-crc      When reading a CRC format archive, only verify thechecksum of each file in the archive, don'tactually extract the filesOperation modifiers valid only in copy-out mode:-A, --append               Append to an existing archive.--device-independent, --reproducibleCreate device-independent (reproducible) archives--ignore-devno         Don't store device numbers-O [[USER@]HOST:]FILE-NAME Archive filename to use instead of standardoutput. Optional USER and HOST specify the userand host names in case of a remote archive--renumber-inodes      Renumber inodesOperation modifiers valid only in copy-pass mode:-l, --link                 Link files instead of copying them, whenpossibleOperation modifiers valid in copy-in and copy-out modes:--absolute-filenames   Do not strip file system prefix components fromthe file names--no-absolute-filenames   Create all files relative to the currentdirectoryOperation modifiers valid in copy-out and copy-pass modes:-0, --null                 A list of filenames is terminated by a nullcharacter instead of a newline-a, --reset-access-time    Reset the access times of files after readingthem-I [[USER@]HOST:]FILE-NAME Archive filename to use instead of standard input.Optional USER and HOST specify the user and hostnames in case of a remote archive-L, --dereference          Dereference  symbolic  links  (copy  the filesthat they point to instead of copying the links).-R, --owner=[USER][:.][GROUP]   Set the ownership of all files created to thespecified USER and/or GROUPOperation modifiers valid in copy-in and copy-pass modes:-d, --make-directories     Create leading directories where needed-m, --preserve-modification-timeRetain previous file modification times whencreating files--no-preserve-owner    Do not change the ownership of the files--sparse               Write files with large blocks of zeros as sparsefiles-u, --unconditional        Replace all files unconditionally-?, --help                 give this help list--usage                give a short usage message--version              print program versionMandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.Report bugs to <bug-cpio@gnu.org>.

 

1.2.2 银河麒麟(kylin)系统中的cpio命令帮助信息

[purpleendurer @ kylin ~] cpio --help
用法: cpio [选项...] [目标目录]
GNU `cpio' 归档文件及从包中提取文件例子:# 归档 name-list 中的文件到 archivecpio -o < name-list [> archive]# 从 archive 中提取文件cpio -i [< archive]# 拷贝 name-list 中的文件到目标目录(destination-directory)cpio -p destination-directory < name-list主操作模式-i, --extract              从包中提取文件 (运行 copy-in 模式)-o, --create               创建包 (运行 copy-out 模式)-p, --pass-through         运行 copy-pass 模式-t, --list                 打印输入内容列表应用于所有模式的选项:--block-size=BLOCK-SIZE   设置 I/O 块大小为 BLOCK-SIZE * 512字节-B                         设置 I/O 块大小为 5120 字节-c                         使用老的可移植的 (ASCII) 包格式-C, --io-size=NUMBER       设置 I/O 块大小为指定的 NUMBER 字节--force-local包文件是本地的,尽管名字中含有冒号-f, --nonmatching          仅拷贝不匹配任意给定的模式的文件-F, --file=[[用户@]主机:]文件名用“文件名”来替代标准输入和输出。如果是非本地的文件,则用可选的“用户”和“主机”来指定用户名和主机名。-H, --format=格式        使用指定的包格式-M, --message=STRING       当到达备份介质的尾部的时候打印STRING-n, --numeric-uid-gid      在内容列表的详表中,显示数字的 UID和 GID--quiet                不要打印已拷贝的块数--rsh-command=COMMAND  用 COMMAND 替代 rsh-v, --verbose              详细列出已处理的文件-V, --dot                  每处理一个文件就打印一个“.”-W, --warning=FLAG         控制警告信息显示。当前 FLAG可为“none”、“truncate”或“all”。多个选项可以累积。命令修饰仅在 copy-in 模式中有效:-b, --swap交换数据中每个字的两个半字以及每个半字中的两个字节。等价于-sS-r, --rename               交互式重命名文件-s, --swap-bytes           交换文件中每个半字中的两个字节-S, --swap-halfwords交换文件中每个字(4个字节)中的两个半字--to-stdout            提取文件到标准输出-E, --pattern-file=FILE    从 FILE中读取额外的用于指定提取或列表的文件名的模式--only-verify-crc      当读取一个 CRC格式的包,仅检验包中每个文件的CRC,不提取文件应用于 copy-out 模式的选项-A, --append               追加到已存在的归档文件。-O [[用户@]主机:]文件名使用包文件名而不是标准输出。如果文件在远程机器上,则可指定用户和主机应用于 copy-pass 模式的选项:-l, --link                 在可行时链接文件而不是拷贝文件应用于 copy-in 及 copy-out 模式的选项:--absolute-filenames   文件名不去除文件系统前缀--no-absolute-filenames   相对于当前目录来创建所有文件应用于 copy-out 及 copy-pass 模式的选项:-0, --null                 文件名列表采用 NULL而不是换行作为分割符-a, --reset-access-time    文件读取后恢复文件的访问时间-I [[用户@]主机:]文件名从文件读入而不是从标准输入读入。如果文件在远程机器上,则可指定用户和主机-L, --dereference          跟随符号链接(拷贝符号链接指向的文件而不是拷贝链接本身)-R, --owner=[用户][:.][组]设置所有文件的所有权信息到指定的用户和/或组应用于 copy-in 和 copy-pass 模式的选项:-d, --make-directories     需要时创建目录--extract-over-symlinks   Force writing over symbolic links-m, --preserve-modification-time创建文件时保留以前文件的修改时间--no-preserve-owner    不改变文件的所有权--sparse把含有大块零的文件以稀疏文件方式写出-u, --unconditional        无条件覆盖所有文件-?, --help                 显示此帮助列表--usage                显示简短的用法说明--version              打印程序版本对长选项必须或可选的参数同样适用于相应的短选项。请向 <bug-cpio@gnu.org> 报告错误。
[purpleendurer @ kylin ~] 

 

1.3 cpio 命令格式

cpio [选项...] [目标目录]

 1.4 cpio命令的选项说明 

与tar命令相似,cpio命令的选项也很多,分为

1.4.1 主要操作模式选项

 

选项说明
-i, --extract从包中提取文件 (运行 copy-in 模式)
-o, --create创建包 (运行 copy-out 模式)
-p, --pass-through运行 copy-pass 模式
-t, --list将输入内容以列表形式打印

1.4.2 应用于所有模式的选项

 

选项说明
--block-size=BLOCK-SIZE设置 I/O 块大小为 BLOCK-SIZE * 512字节
-B设置 I/O 块大小为 5120 字节
-c使用老的可移植的 (ASCII) 包格式
-C, --io-size=NUMBER设置 I/O 块大小为指定的 NUMBER 字节
--force-local包文件是本地的,尽管名字中含有冒号
-f, --nonmatching仅拷贝不匹配任意给定的模式的文件
-F, --file=[[用户@]主机:]文件名用“文件名”来替代标准输入和输出。如果是非本地的文件,则用可选的“用户”和“主机”来指定用户名和主机名。
-H, --format=格式使用指定的包格式
-M, --message=STRING当到达备份介质的尾部的时候打印 STRING
-n, --numeric-uid-gid在内容列表的详表中,显示数字的 UID和 GID
--quiet不要打印已拷贝的块数
--rsh-command=COMMAND用 COMMAND 替代 rsh
-v, --verbose详细列出已处理的文件
-V, --dot每处理一个文件就打印一个“.”
-W, --warning=FLAG

控制警告信息显示。

FLAG可为“none”、“truncate”或“all”。多个选项可以累积。

1.4.3 仅在copy-in 模式中有效的选项

 

选项说明
-b, --swap交换数据中每个字的两个半字以及每个半字中的两个字节。等价于-sS
-r, --rename交互式重命名文件
-s, --swap-bytes交换文件中每个半字中的两个字节
-S, --swap-halfwords交换文件中每个字(4个字节)中的两个半字
--to-stdout提取文件到标准输出
-E, --pattern-file=FILE从 FILE中读取额外的用于指定提取或列表的文件名的模式
--only-verify-crc当读取一个 CRC格式的包时,仅检验包中每个文件的CRC,不提取文件

1.4.4  仅在copy-out 模式中有效的选项

选项说明备注
-A, --append追加到已存在的归档文件。
--device-independent, --reproducible创建独立于设备(可重现)的存档银河麒麟操作系统不支持
--ignore-devno不存储设备编号银河麒麟操作系统不支持
-O [[用户@]主机:]文件名使用包文件名而不是标准输出。如果文件在远程机器上,则可指定用户和主机
--renumber-inodes对 inode 重新编号银河麒麟操作系统不支持

1.4.5  仅在copy-out 模式中有效的选项

选项说明
-l, --link在可行时链接文件而不是拷贝文件

1.4.6   在copy-in 及 copy-out 模式中有效的选项

选项说明
--absolute-filenames文件名不去除文件系统前缀
--no-absolute-filenames相对于当前目录来创建所有文件

 1.4.7   在 copy-out 及 copy-pass 模式中有效的选项

 

 

选项说明
-0, --null文件名列表采用 NULL而不是换行作为分割符
-a, --reset-access-time文件读取后恢复文件的访问时间
-I [[用户@]主机:]文件名从文件读入而不是从标准输入读入。如果文件在远程机器上,则可指定用户和主机
-L, --dereference跟随符号链接(拷贝符号链接指向的文件而不是拷贝链接本身)
-R, --owner=[用户][:.][组]设置所有文件的所有权信息到指定的用户和/或组

1.4.8   在 copy-in 及 copy-pass 模式中有效的选项 

 

选项说明备注
-d, --make-directories需要时创建目录
--extract-over-symlinks强制复写符号链接银河麒麟系统支持
-m, --preserve-modification-time创建文件时保留以前文件的修改时间
--no-preserve-owner不改变文件的所有权
--sparse把含有大块零的文件以稀疏文件方式写出
-u, --unconditional无条件覆盖所有文件
-?, --help显示此帮助列表
--usage显示简短的用法说明
--version打印程序版本

1.4.9 相关说明

 对长选项必须或可选的参数同样适用于相应的短选项。

1.5 cpio命令的三种模式

cpio命令的选项和参数取决于它运行的模式,即copy-out, copy-in或copy-pass模式。

1.5.1 将文件复制到归档文件中(copy-out模式)

在copy-out模式下,cpio命令将文件复制到归档文件中。它从标准输入读取文件名列表,每行一个,然后将归档文件写入标准输出。

生成文件名列表的典型方法是使用find命令;给find命令加上-depth选项,以最小化不可读目录的权限问题。

1.5.2 从归档文件中提取文件(copy-in模式)

copy-in模式下,cpio命令从归档文件中提取文件或列出归档文件的内容。

它从标准输入读取归档文件。

任何非选项的命令行参数都是shell通配符模式;只有归档文件中名称与一个或多个模式匹配的文件才会从归档文件中提取。

与shell不同的是,文件名中的初始'.'可以匹配模式开头的通配符,而文件名中的'/'也可以匹配通配符。

如果没有给出模式,所有文件都会被提取。

1.5.3 将文件从一个目录树复制到另一个目录树(copy-pass模式)

在copy-pass模式下,cpio命令将文件从一个目录树复制到另一个目录树,将copy-out和copy-in步骤结合在一起,而不实际使用归档文件。

1.6 cpio命令支持的归档格式

cpio命令支持多种归档格式,包括:binary, old ASCII, new ASCII, CRC, HP-UX binary, HP-UX old ASCII, old tar, 和 POSIX .1 tar。

默认情况下,cpio命令创建binary格式的归档文件,以便与旧版本的cpio程序兼容。

在从归档文件中提取文件时,cpio命令会自动识别归档文件的类型,并且可以读取在不同字节顺序的机器上创建的归档文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

具有RC反馈电路的正弦波振荡器(文氏桥振荡器+相移振荡器+双T振荡器)

2024-9-10&#xff0c;星期二&#xff0c;22:13&#xff0c;天气&#xff1a;雨&#xff0c;心情&#xff1a;晴。今天从下午开始淅淅沥沥一直在下雨&#xff0c;还好我有先见之明没骑自行车&#xff0c;但是我忘带伞了&#xff0c;属于说是有点脑子但是不多了&#xff0c;2333…

如何注册谷歌账号(“此电话号码无法验证”问题)

如何注册谷歌账号&#xff08;“此电话号码无法验证”问题&#xff09; 以下注册账号的步骤于 2024.9.10 20:00 成功实施。 文章目录 如何注册谷歌账号&#xff08;“此电话号码无法验证”问题&#xff09;1&#xff09;打开谷歌浏览器2&#xff09;设置浏览器语言【英语&…

elementPlus 反显el-select多选,只反显了id,没有名称

elementPlus 反显el-select多选&#xff0c;只反显了id&#xff0c;没有名称 原因 &#xff1a; el-select的v-model数组中元素和接口返回的数组中元素类型不同&#xff0c;一个是字符串一个是数字类型 解决办法 &#xff1a; 数组中字符串转换下数字&#xff0c;或者数字转…

Docker基本管理--Dockerfile镜像制作(Docker技术集群与应用)

容器端口映射&#xff1b; 容器间通信&#xff1b; 容器数据卷&#xff1b; DockerFile; 容器端口映射: 实验环境&#xff1a;紧接着之前的快照&#xff0c;将该文件夹拉取进去&#xff1b; 然后执行导入的脚本&#xff0c;会将该目录下所有打包好的镜像文件导入进入。 然后进…

axios取消请求

1.使用CancelToken: class RequestHttp {service: AxiosInstance;public constructor(config: AxiosRequestConfig) {// 实例化axiosthis.service axios.create(config);/*** description 请求拦截器* 客户端发送请求 -> [请求拦截器] -> 服务器*/this.service.interce…

【项目一】基于pytest的自动化测试框架day1

day1不涉及编写代码&#xff0c;只简单梳理接口测试相关的概念。 day1接口测试的本质&#xff1a;功能测试的一部分测试用例的设计与实现接口调试与自动化&#xff1a;从postman到持续集成补充概念 day1 接口测试的本质&#xff1a;功能测试的一部分 接口测试是功能测试的一部…

每个python程序员都应该早点知道的 6 个 Python 函数

在编程中&#xff0c;默认参数的引入使得函数调用更为灵活&#xff0c;不仅允许开发者在特定情况下省略某些非必需参数&#xff0c;同时也强调了对参数与实际传递值&#xff08;即论点&#xff09;之间区别的理解&#xff0c;这对于掌握函数工作机制至关重要。 此外&#xff0…

nnunetv2系列:使用默认的预测类推理2D数据

nnunetv2系列&#xff1a;使用默认的预测类推理2D数据 这里参考源代码nnUNet/nnunetv2/inference/predict_from_raw_data.py中给的示例进行调整和测试。 代码示例 from torch import device from nnunetv2.inference.predict_from_raw_data import nnUNetPredictor# from nn…

VScode 的简单使用

目录 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 也可以“ CTRLD ”&#xff1b;使用“CTRL滚轮”即可&#xff1b; ctrl /-&#xff0c;是用来展开/收起代码的&#xff1b; 比如&#xff1a;js 的多行注释是 shiftalt…

[数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;17318 标注数量(xml文件个数)&#xff1a;17318 标注数量(txt文件个数)&#xff1a;17318 标…

AV1 Bitstream Decoding Process Specification:术语和定义

原文地址&#xff1a;https://aomediacodec.github.io/av1-spec/av1-spec.pdf没有梯子的下载地址&#xff1a;AV1 Bitstream & Decoding Process Specification摘要&#xff1a;这份文档定义了开放媒体联盟&#xff08;Alliance for Open Media&#xff09;AV1视频编解码器…

使用Bert模型优化Padding策略:加速文本分类训练

文章目录 摘要介绍导包模型datasetBertCLS速度对比代码开源地址 摘要 本文探讨了如何通过优化Padding策略&#xff0c;提高基于Bert的文本分类模型的训练速度。我们比较了两种不同的Padding方式&#xff1a;一种是将输入数据统一填充到最大长度512&#xff0c;另一种是只将每个…

UE4_后期处理五—饱和度调整、隔离、扭曲、重影

一、色彩饱和度调整&#xff1a; 原图 后期处理材质节点&#xff1a; 效果图&#xff1a; 可以根据参数saturation调整饱和还是去饱和。 当saturation为1时&#xff1a;去饱和度&#xff0c;如下图&#xff1a; 当saturation为0时&#xff1a;原始的一个状态&#xff0c;如下…

Debian安装Nodejs与npm

仅做记录&#xff0c;apt install nodejs 只会安装 Node.js 本身&#xff0c;而不会自动安装 npm sudo apt install -y nodejssudo apt install -y npm

展会通过智慧客流统计分析优化运营策略-讯鹏科技

在当今数字化高速发展的时代&#xff0c;展会行业也在积极探索利用智慧科技进行转型与升级。其中&#xff0c;智慧客流统计分析成为了展会优化运营策略的关键要素。 智慧客流统计分析首先为展会提供了精准的数据支撑。通过先进的传感器、摄像头等设备&#xff0c;能够实时、准确…

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客&#xff1a; mac安装jdk oracle 版本&#xff1a;https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本&#xff1a;https://adoptium.net/zh-CN/temurin/releases/ 阿里版本&#xff1a; github&#xff1a;htt…

PyCharm修改背景颜色、修改字体大小+Python常用快捷键+Python常见的运算符

文章目录 PyCharm软件的使用1. 修改背景颜色和字体大小1.1 修改背景颜色1.2 修改字体大小 2. 常用的快捷键3. 常见的运算符3.1 算术运算符3.2 赋值运算符3.3 比较运算符3.4 逻辑运算符 PyCharm软件的使用 1. 修改背景颜色和字体大小 1.1 修改背景颜色 1.2 修改字体大小 2. 常…

图文并茂带你理解Java的SPI机制

目录 一、Java的SPI机制1、什么是Java的SPI &#xff1f;2、JavaSPI 代码示例 (使用Maven项目演示)3、 JavaSPI 机制的核心-ServiceLoader4、实现自己的ServiceLoader5、Java中还有哪些SPI实现&#xff1f; 一、Java的SPI机制 1、什么是Java的SPI &#xff1f; SPI全称 Servi…

字符串API

字符串作为经常使用的数据类型&#xff0c;它们的API种类繁多&#xff0c;为了提升效率&#xff0c;不少API的底层实现可能会用更接近机器优化的代码实现。 不同语言的实现 用于内核或驱动调用的copy/compare API&#xff0c;大部分有机器架构汇编代码实现以加速处理&#xff…

中秋快到了,要给哪些国外客户送祝福(附贺卡模板)

马上就要中秋节了&#xff0c;在这里提前祝小伙伴们中秋节快乐&#xff0c;身体健康&#xff0c;阖家团圆&#xff0c;业绩越来越好&#xff0c;公司越来越好&#xff0c;一切都越来越好&#xff01; 中秋节是我们非常重要的几个传统节日之一了&#xff0c;除了我们自己庆祝之…