返回介绍

Hack-51 Cpio 命令

发布于 2025-03-08 17:38:41 字数 2778 浏览 0 评论 0 收藏 0

Cpio 命令

这个 cpio 我是第一次听说,如有不妥的地方还请大家指正。

cpio 命令是用来处理归档文件的,这里的归档文件包括 .cpio , .tar

cpio stands for “copy in, copy out”.

说的很明白,复制进来,复制出去. 果真 Linux 的软件命名都是根据内容来的,直观易懂。

它可以干三种事:

  1. 把文件复制到某个归档文件中
  2. 从某个归档文件中提取文件
  3.  

cpio 从标准输入中读取文件列表,创建一个归档文件后把这些文件都输入到里面,最后再输出到标准输出中(或者重定向).

创建 cpio 归档
➤ cd test/
➤ ls
cal_random.sh  catshadow.c   numbers.bz2  vpnn
catshadow.bz2  helloword.py  test.php
➤ ls | cpio -ov > test.cpio  # o-创建归档文件
cal_random.sh
catshadow.bz2
catshadow.c
helloword.py
numbers.bz2
test.php
vpnn
248 blocks
➤ ls -l test.cpio 
-rw-rw-r-- 1 mr mr 124K  1 月  5 20:46 test.cpio

正如你所看到的,把 ls 列出的文件通过管道传递给 cpio 后, cpio 将他们压缩,然后我们再通过重定向,导入到了 test.cpio 文件中。

提取 cpio 中的文件

接着上一个目录中的内容,我们新建一个目录,把文件提取出来:

➤ mkdir cpio
mkdir: created directory ‘cpio’
➤ cd cpio/
➤ ls
➤ cpio -idv < ../test.cpio # i-从归档文件中提取
cal_random.sh
catshadow.bz2
catshadow.c
helloword.py
numbers.bz2
test.cpio
test.php
vpnn
494 blocks
➤ ls
cal_random.sh  catshadow.c   numbers.bz2  test.php
catshadow.bz2  helloword.py  test.cpio    vpnn
➤

看到了么, cpio 从标准输入中读取了归档文件,然后把里面的文件提取了出来。

归档特定的文件

➤ find . -iname *.c -print | cpio -ov >/tmp/c_files.cpio
./catshadow.c
1 block
➤

这里没啥好说的,就是利用了 find 而已。

用 cpio 创建 tar 文件

我们可以用 cpio 创建一个 .tar 类型的文件:

ls | cpio -ov -H tar -F sample.tar

殊途同归。

怎样提取呢?

cpio -idv -F sample.tar

用上面这个。

我们可以看到,除了利用重定向,我们还可以用 -F 的参数来定义所要操作的文件。

还有,不解压查看 tar 文件里面的文件名:

cpio -it -F sample.tar

作者还列举了几个不常用的:

1.将符号链接所指向的内容打包:

ls | cpio -oLv >/tmp/test.cpio

2.保留文件的修改时间

ls | cpio -omv >/tmp/test.cpio

3.拷贝文件夹

$ mkdir /mnt/out
$ cd objects
$ find . -depth | cpio -pmdv /mnt/out

个人感觉 cpio 像是一个文件流操作器,压缩也好,解压也好,复制也好,都是以一种数据流的形式进行操作。

扩展阅读

本书简介:

  • Linux 进阶技巧
  • 巧妙的命令组合
  • Bash 某些技巧
  • 一共一百零一个(包括充数的)
  • 最后有个奖励章(额外技巧)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文