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

news2024/11/16 7:20:32

 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 archives

Examples:
  # Copy files named in name-list to the archive
  cpio -o < name-list [> archive]
  # Extract files from the archive
  cpio -i [< archive]
  # Copy files named in name-list to destination-directory
  cpio -p destination-directory < name-list

 Main operation mode:
  -i, --extract              Extract files from an archive (run in copy-in
                             mode)
  -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 input

 Operation modifiers valid in any mode:

      --block-size=BLOCK-SIZE   Set the I/O block size to BLOCK-SIZE * 512
                             bytes
  -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 of
                             bytes
      --force-local          Archive file is local, even if its name contains
                             colons
  -f, --nonmatching          Only copy files that do not match any of the given
                             patterns
  -F, --file=[[USER@]HOST:]FILE-NAME
                             Use this FILE-NAME instead of standard input or
                             output. Optional USER and HOST specify the user
                             and 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 the
                             backup media is reached
  -n, --numeric-uid-gid      In the verbose table of contents listing, show
                             numeric 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 options
                             accumulate.

 Operation modifiers valid only in copy-in mode:

  -b, --swap                 Swap both halfwords of words and bytes of
                             halfwords 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 the
                             files
      --to-stdout            Extract files to standard output

  -E, --pattern-file=FILE    Read additional patterns specifying filenames to
                             extract or list from FILE
      --only-verify-crc      When reading a CRC format archive, only verify the
                             checksum of each file in the archive, don't
                             actually extract the files

 Operation modifiers valid only in copy-out mode:

  -A, --append               Append to an existing archive.
      --device-independent, --reproducible
                             Create device-independent (reproducible) archives
      --ignore-devno         Don't store device numbers
  -O [[USER@]HOST:]FILE-NAME Archive filename to use instead of standard
                             output. Optional USER and HOST specify the user
                             and host names in case of a remote archive
      --renumber-inodes      Renumber inodes

 Operation modifiers valid only in copy-pass mode:

  -l, --link                 Link files instead of copying them, when
                             possible

 Operation modifiers valid in copy-in and copy-out modes:

      --absolute-filenames   Do not strip file system prefix components from
                             the file names
      --no-absolute-filenames   Create all files relative to the current
                             directory

 Operation modifiers valid in copy-out and copy-pass modes:

  -0, --null                 A list of filenames is terminated by a null
                             character instead of a newline
  -a, --reset-access-time    Reset the access times of files after reading
                             them
  -I [[USER@]HOST:]FILE-NAME Archive filename to use instead of standard input.
                             Optional USER and HOST specify the user and host
                             names in case of a remote archive
  -L, --dereference          Dereference  symbolic  links  (copy  the files
                             that they point to instead of copying the links).
  -R, --owner=[USER][:.][GROUP]   Set the ownership of all files created to the
                             specified USER and/or GROUP

 Operation modifiers valid in copy-in and copy-pass modes:

  -d, --make-directories     Create leading directories where needed
  -m, --preserve-modification-time
                             Retain previous file modification times when
                             creating files
      --no-preserve-owner    Do not change the ownership of the files
      --sparse               Write files with large blocks of zeros as sparse
                             files
  -u, --unconditional        Replace all files unconditionally

  -?, --help                 give this help list
      --usage                give a short usage message
      --version              print program version

Mandatory 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 中的文件到 archive
  cpio -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.coloradmin.cn/o/2133906.html

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

相关文章

Redis网络模型、通信协议、内存回收

Redis网络模型 一、用户空间和内核空间&#xff08;前提&#xff09;问题来了&#xff1a;为啥要区分用户空间和内核空间呢&#xff1f;我们来看看两个空间以及硬件是如何操作的 二、Linux中五种IO模型1、 阻塞IO2、非阻塞IO3、IO多路复用3.1、SELECT3.2、poll3.3、epoll 4、信…

北大领衔:多智能体研究登上Nature子刊

这篇笔记可以作为接EoT那篇笔记内容中某种思想内涵的延伸和实践&#xff0c;即均是将智能体之间的关系描述为一种拓扑连接结构下的网络化关系进行研究&#xff08;贴近物理世界更加真实、自然、客观的拓扑结构&#xff09;&#xff0c;在这项研究中&#xff0c;更多的扩展到大规…

SpringCloud-04 OpenFeign服务调用与负载均衡

OpenFeign是一个声明式、模板化的HTTP客户端&#xff0c;它简化了在Java应用程序中调用RESTful API的过程。OpenFeign是Netflix开发的一个开源项目&#xff0c;它构建在Feign的基础上&#xff0c;为开发者提供了更加简单、灵活的方式来实现HTTP请求。OpenFeign的特点包括&#…

蓝桥杯真题——约翰的牛奶

输入样例&#xff1a; 8 9 10 输出样例&#xff1a; 1 2 8 9 10 本题是宽搜的模版题&#xff0c;不论怎么倒牛奶&#xff0c;A,B,C 桶里的牛奶可以看做一个三元点集 我们只要找到A桶是空的&#xff0c;B,C桶中的状态即可 #include <iostream> #include <cstring…

四、滑动窗口-算法总结

文章目录 四、滑动窗口4.1 模板4.2 示例4.2.1 最小覆盖子串4.2.2 字符串的排列4.2.3 找到字符串中所有字母异位词4.2.4 无重复字符的最长子串 四、滑动窗口 4.1 模板 /* 滑动窗口算法框架 */ void slidingWindow(string s, string t) {unordered_map<char, int> need, …

【C++题解】1398. 奇偶统计

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1398. 奇偶统计 类型&#xff1a;二维数组 题目描述&#xff1a; 在一个n行m列的二维数组中&#xff0c;有若干奇数和偶数&#xff0c;请编程统计出这个二维数组中&#xff0c;奇数…

使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步

1、下载地址 --查看是否开启bin_log日志&#xff0c;value on表示开启 SHOW VARIABLES LIKE log_bin; -- 查看bin_log日志文件 SHOW BINARY LOGS; --查看bin_log写入状态 SHOW MASTER STATUS; --查看bin_log存储格式 row SHOW VARIABLES LIKE binlog_format; --查看数据库服…

actuator字符绕过漏洞在Nginx上的配置

最近遇到了安全部门派发的actuator泄漏漏洞&#xff0c;领导希望不暴露到外网上&#xff0c;对于内网需要认证才可以访问。 要想不暴露到外网上&#xff0c;就需要在网络层面做拦截&#xff0c;比如nginx和apisix上做代理配置。 URI字符绕过的风险背景知识: URI字符绕过是一种安…

【笔记】第二节 熔炼、轧制、热处理和焊接工艺

文章目录 2.1 钢轨冶炼工艺2.1.1 冶炼工艺(1)铁水预处理(2)转炉合金化冶炼(3)钢包精炼工艺&#xff08;LF&#xff08;Ladle Furnace&#xff09;炉&#xff09; 2.1.2 技术要点(1) LF精炼(2) 夹杂物及有害元素控制非金属夹杂物P和S杂质气体 (3) 铸造组织控制钢轨材质的特点铸造…

雷尼绍圆光栅差分ABZ测量问题

雷尼绍圆光栅差分ABZ测量问题 文章目录 雷尼绍圆光栅差分ABZ测量问题引言一 设备1.1 雷尼绍圆光栅1.2 永磁同步电机1.3 M新动力驱动控制器 二 问题2.1 关于圆光栅2.1.1 电机静止时存在位置抖动问题2.1.2 脉冲数计算问题 引言 最近在调试FOC控制&#xff0c;位置反馈采用的是雷…

基于Ubuntu2404搭建mysql8配置远程访问

使用系统为Ubuntu2404&#xff0c;mysql8版本为8.0.36 安装mysql apt install -y mysql-server设置开机自启动 systemctl enable --now mysql修改密码&#xff0c;似乎是bug&#xff0c;修改密码第一次不成功&#xff0c;第二次可以 mysql use mysql; update user set Host…

局域网UDP通信实验

环境&#xff1a; 一个随身WIFI 一台笔记本电脑 一部手机 随身WIFI连接电脑 手机连接WIFI 此时手机和电脑在同一局域网中 手机IPV4地址&#xff1a;192.168.0.20 电脑IPV4地址&#xff1a;192.168.0.39 电脑端使用两台windows系统计算机简单TCP通信测试_两台计算机tcp通信-CSDN…

性能测试:Locust使用介绍(五)

事件钩子 Locust附带了许多事件钩子&#xff0c;可用于以不同的方式扩展Locust。 例如&#xff0c;以下是如何设置一个事件监听器&#xff0c;该监听器将在请求完成后触发&#xff1a; from locust import eventsevents.request.add_listener def my_request_handler(reques…

通信工程学习:什么是EDFA掺铒光纤放大器

EDFA&#xff1a;掺铒光纤放大器 EDFA&#xff0c;即掺铒光纤放大器&#xff08;Erbium-Doped Fiber Amplifier&#xff09;&#xff0c;是一种在光纤通信中广泛使用的光放大器件。以下是对EDFA的详细解释&#xff1a; 一、定义与基本原理 EDFA是在石英光纤中掺入少量的稀土元…

fpga系列 HDL:全连接层实现单个神经元PE(组成:FADD+FM)+vivado单模块仿真

vivado单模块仿真 右键模块的tb.v文件-》“Set as Top” -》点击左侧的“Run Simulation” vivado单模块综合 也可将其他模块暂时Disable PE模块单独综合的结果: 单个神经元PE的结构 processingElement.v 该模块计算两个浮点数的乘积&#xff0c;并将乘积与当前结果相加。最…

Django笔记一:搭建Django环境与URL路径访问

博主之前学从Java后端开发&#xff0c;后面获取到读研资格&#xff0c;想着未来转算法岗&#xff0c;初学Python&#xff0c;发现Python还挺有趣的&#xff0c;由于之前所学后端缘故&#xff0c;有点后端情节&#xff0c;想学习一下Django框架&#xff08;python的web框架&…

Unix时间戳与C语言的time.h库函数

目录 Unix时间戳介绍 UTC/GMT 时间与秒计数器转换代码 time.h库函数 Unix时间戳介绍 Unix 时间戳&#xff08;Unix Timestamp&#xff09;定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数&#xff0c;不考虑闰秒 时间戳存储在一个秒计数器中&#xff0c;秒计数器…

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘&#xff1a;异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…

车辆重识别(关于卷积神经网络一些资料)2024/9/11

关于卷积神经网络的介绍 一&#xff0c;全连接神经网络 1&#xff0c;全连接神经网络的整体结构 X代表左边输入的数据&#xff08;向量或者矩阵等等&#xff09;&#xff0c;Y代表模型对数据处理之后的结果&#xff0c;中间的节点都可以算作为隐藏层。 2&#xff0c;全连接神经…

【C++二分查找 容斥原理】1201. 丑数 III

本文涉及的基础知识点 C二分查找 容斥原理&#xff1a;组合数学汇总 LeetCode1201. 丑数 III 丑数是可以被 a 或 b 或 c 整除的 正整数 。 给你四个整数&#xff1a;n 、a 、b 、c &#xff0c;请你设计一个算法来找出第 n 个丑数。 示例 1&#xff1a; 输入&#xff1a;n …