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.rhkb.cn/news/423494.html

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

相关文章

游戏开发| Unreal5.2-5.4接入chatGPT定制游戏NPC

引擎版本UE5.2 (也支持到5.4,有试用其它插件所以选择之前版本) 使用插件(免费) 1.VArest (插件官方介绍:Plugin that makes REST communications much easier.)可以让REST(Representational State Transfer)通信变得更加容易,涉及客户端与服务器之间通过 HTTP 协议…

windows C++-并行编程-并行算法(四)- 并行排序

并行模式库 (PPL) 提供了对数据集合并行地执行工作的算法。这些算法类似于 C 标准库提供的算法。并行算法由并发运行时中的现有功能组成。 PPL 提供三种排序算法&#xff1a;concurrency::parallel_sort、concurrency::parallel_buffered_sort 和 concurrency::parallel_radix…

VS Code 配置 Rust-Analyzer 报错

报错信息&#xff1a; Bootstrap Error" rust-analyzer requires glibc > 2.28 in latest build. 参考了好多地方&#xff0c; https://github.com/rust-lang/rust-analyzer/issues/11558 https://blog.csdn.net/aLingYun/article/details/120923694 https://rust-anal…

Fair Graph RepresentationLearning via Diverse Mixture-of-Experts

发表于&#xff1a;WWW23 推荐指数&#xff1a; #paper/⭐⭐ 问题背景&#xff1a; 背景 现实世界的数据很多样&#xff0c;阻止GNN学习公平的表示。当去偏见化后&#xff0c;他们面临着可学知识不足且属性有限的重大问题 解决方法&#xff1a; 应对公平训练导致可学习知识…

TC3xx系列芯片--PortDio模块介绍

1、模块介绍 Port(端口)是芯片与板上其他外设或逻辑电路交互的重要引脚&#xff0c;用于芯片发出控制信号或接收外部信号。通过GPIO模式或各类通讯模式&#xff0c;对板载设备进行控制。 Aurix TC3xx系列芯片具有丰富的Port连接&#xff0c;而且每个Pin脚具有多种功能复用&am…

搜索软件 Everything 的安装与使用教程

一、Everything简介 适用于 Windows 的免费搜索工具 Everything 是 Windows 的即时搜索引擎。发现、整理并轻松访问文件和文件夹&#xff0c;一切尽在指尖&#xff01; PS&#xff1a;Everything无法对文件内容进行搜索&#xff0c;只能根据文件名和路径进行搜索 二、Everyt…

面向对象程序设计之模板进阶(C++)

在之前我出过一篇博客介绍了模版的初阶:面向对象程序设计(C)模版初阶&#xff0c;接下来我们将进行模版的进阶学习&#xff0c;介绍关于更多模版的知识 1.非类型模版参数 模板参数分类类型形参与非类型形参 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或…

电力系统调度控制台的功能有哪些

在复杂多变的现代电力系统中&#xff0c;调度控制台作为其核心管理与控制的中枢&#xff0c;扮演着不可或缺的角色。它不仅是确保电网安全稳定运行的关键&#xff0c;也是实现电力资源高效配置的重要工具。那么&#xff0c;电力系统调度控制台究竟具备哪些关键功能呢? 首先&am…

Easyexcel导入数据,没有指定文件路径临时文件在什么位置?

1、SpringBoot接口导入Excel&#xff0c;MultipartFile转File public static File convertToFile(MultipartFile multipartFile) throws IOException {// 将 MultipartFile 转换为 byte[]byte[] bytes multipartFile.getBytes();// 创建一个临时文件File tempFile File.creat…

大模型时代的企业转型:RAG技术的进化与挑战

从2023年起开始火爆的大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;&#xff0c;如GPT/Gemini/通义千问/GLM/文心一言/豆包等&#xff0c;经过了一年多的比拼和进化&#xff0c;已经几乎涵盖了所有通用性、常识性的知识和理解力&#xff1b; 与之同…

基于Java+Mysql实现(web)大型企业管理系统

技术报告 第一章 系统概述 包括用户管理、权限管理、软件项目管理、软件模块管理、测试用例管理、测试任务分配、bug管理等功能。实现公司不同部门间团队协作&#xff0c;管理人员也能够更加有效的把控系统开发的进度。 本实验综合应用JavaWeb编程中的Servlet&#xff0c;JS…

iPhone 16分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max

史上最全iPhone 机型分辨率&#xff0c;屏幕尺寸&#xff0c;PPI详细数据&#xff01;已更新到iPhone 16系列&#xff01; 点击放大查看高清图 &#xff01;

电商api接口:让数据成为生产力的第一利器

随着电子商务的蓬勃发展&#xff0c;数据已成为推动业务增长和优化用户体验的关键因素。为了满足商家和开发者对多元化电商服务的需求&#xff0c;聚合电商 API 接口平台应运而生。这类平台通过整合多个电商平台的 API 接口&#xff0c;为商家和开发者提供一站式的数据服务&…

Apisix离线安装

上传离线包 #ll apisix-3.2.2-0.el7.x86_64.rpm apisix-base-1.21.4.1.8-0.el7.x86_64.rpm apisix-dashboard-3.0.1-0.el7.x86_64.rpm cyrus-sasl-2.1.26-24.el7_9.x86_64.rpm cyrus-sasl-devel-2.1.26-24.el7_9.x86_64.rpm cyrus-sasl-gssapi-2.1.26-24.el7_9.x86_64.rpm cyr…

HTB-Unified(log4j2漏洞、MongoDb替换管理员密码)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解Unified靶机 渗透过程 信息搜集 服务器开放了SSH服务&#xff0c;HTTP服务 访问网站 验证log4j2漏洞 8443端口&#xff1a;UniFi 网络 &#xff0c;访问查询 是否有Nday漏洞利用 可以观察到UniFi的版…

【网络安全的神秘世界】渗透测试基础

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 渗透测试基础 基于功能去进行漏洞挖掘 1、编辑器漏洞 1.1 编辑器漏洞介绍 一般企业搭建网站可能采用了通用模板&#xff…

【计算机网络】电路交换、电报交换、分组交换

【计算机网络】电路交换、电报交换、分组交换 目录 【计算机网络】电路交换、电报交换、分组交换1. 电路交换2. 电报交换3. 分组交换4. 基于分组交换~“虚电路交换”技术 1. 电路交换 电路交换&#xff08;Circuit Switching&#xff09;:通过物理线路的连接&#xff0c;动态地…

linux_L2_linux删除文件

linux 删除文件 在Linux下删除文件有多种实现方法&#xff0c;以下是其中几种常见的方法&#xff1a; 方法一&#xff1a;使用rm命令删除单个文件 rm 文件路径例如&#xff0c;删除当前目录下的文件file.txt&#xff1a; rm file.txtQuestion :当你在Linux系统中使用rm命令删…

Git学习尚硅谷(005 idea集成git)

尚硅谷Git入门到精通全套教程&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 总时长 4:52:00 共45P 此文章包含第27p-第p32的内容 文章目录 忽略特定文件在家目录里创建这个文件在.gitconfig文件里配置这个文件 配置IDEA定位到git程序进行添加文件初始化本地库添加单个…

Mini-Omni 语言模型在流式传输中边思考边听说应用

引入简介 Mini-Omni 是一个开源的多模态大语言模型,能够在思考的同时进行听觉和语言交流。它具有实时端到端语音输入和流媒体音频输出的对话能力。 语言模型的最新进展取得了显著突破。GPT-4o 作为一个新的里程碑,实现了与人类的实时对话,展示了接近人类的自然流畅度。为了…