• Linux基础命令---cpio


    cpio

          从归档中复制文件,或者复制文件到归档中。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

         Cpio命令有三种工作模式:

         1)copy-out mode,cpio指令将文件复制到归档。它读取标准输入上的文件名列表(每行一个),将归档包写到标准输出。

         2)copy-in mode,cpio指令从归档中复制文件,从标准输入读取归档包。

         3)cpio-pass mode,从目录树复制文件到另一个目录,它从标准输入中读取要复制的文件列表。

     

    1、语法

         cpio -o namelist  > archive 

         cpio  -i  <  archive

         cpio  -p  dst-dir < namelist

     

    2、选项列表

    选项

    说明

    -? | --help

    帮助信息

    --version

    显示命令版本信息

    主操作模式

    -i | --extract

    从包中提取文件,copy-in模式

    -o | --create

    创建包,copy-out模式

    -p | --pass-through

    运行copy-pass模式

    -t | --list

    打印输入内容列表

    -l | --list

    对于每一个压缩的文件,列出压缩文件大小、解压大小、压缩比列、压缩前的文件名字

    应用在所有模式的选项

    -B

    设置IO块的大小为5120字节

    -c

    使用老式跨平台的归档格式

    -f

    仅拷贝不匹配任意给定模式的文件

    -F

    用文件名代替标准输入和输出

    -n | --numeric-uid-gid

    在内容列表的详细信息中显示uid和gid

    --quite

    不打印以拷贝的块数

    -v | --verbose

    详细信息

    -V | -dot

    每处理一个文件就打印一个“.”

    应用于copy-in的徐昂想

    -b | --swap

    -r | --rename

    交互式重命名

    -E

    把指定文件的内容当做匹配字符串

    应用于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

    从文件读入

    -R | --owner

    设置所有文件的组合用户信息

    应用于copy-in和copy-pass

    -d

    必要时创建目录

    -m

    创建文件是,保留文件修改时间属性

    -u

    无条件覆盖

     

    3、例子代码

    % ls | cpio -ov > directory.cpio

    归档当前目录下的内容,并且制定输出文件

    % find . -print -depth | cpio -ov > tree.cpio

    存档整个目录树,find命令可以将文件列表提供给cpio。这将获取当前目录中的所有文件,以及下面的目录,并将它们放置在归档目录tree.cpio

    % cpio -iv < directory.cpio

    这将检索存档在文件directory.cpio中的文件,并将它们放在当前目录中

    % cpio -idv < tree.cpio

    这将获取存档tree.cpio的内容,并将其解压缩到当前目录。

    % find . -depth -print0 | cpio --null -pvd new-dir

    将当前目录的文件和子目录复制到一个名为new-dir的新目录中

     

    4、实例

    1)将当前目录归档

    [root@localhost weijie]# ls | cpio -o > mybak           //ls的输出定向到cpio,然后归档

    [root@localhost weijie]# ls

    11.c  1.c  2.c 3.c  4.c  5.c 6.c  mybak

    2)从归档中提取文件

    [root@localhost weijie]# cpio -i < mybak                   //从归档中提取

    cpio: 未创建 11.c:已有更新或同样新的版本存在

    cpio: 未创建 5.c:已有更新或同样新的版本存在

    cpio: 未创建 6.c:已有更新或同样新的版本存在

    cpio: 未创建 mybak:已有更新或同样新的版本存在

    [root@localhost weijie]# ls

    11.c  1.c  2.c  3.c  4.c  5.c  6.c  mybak

    3)拷贝文件

    [root@localhost weijie]# cat list.c 

    1.c

    2.c

    3.c

    [root@localhost weijie]# cpio -p bak/ < list.c          //list.c中的内容当做文件列表,然后拷贝到bak目录

    cpio: 忽略空行

    [root@localhost weijie]# ls bak/

    1.c  2.c  3.c

  • 相关阅读:
    otter安装、使用
    windows下xampp安装rabbitmq的PHP扩展AMQP
    CentOS7下安装RabbitMQ
    CentOS7下开放端口
    CentOS7下安装Redis
    @b.windows.last.use
    Rspec基本语法
    ruby firefox23报错:waiting for evaluate.js load failed
    notepad++上配置ruby执行环境
    cucumber的hooks
  • 原文地址:https://www.cnblogs.com/wj78080458/p/10062098.html
Copyright © 2020-2023  润新知