ToB企服应用市场:ToB评测及商务社交产业平台

标题: Linux shell编程学习条记79:cpio命令——文件和目录归档工具(下) [打印本页]

作者: 麻花痒    时间: 2024-9-21 20:24
标题: Linux shell编程学习条记79:cpio命令——文件和目录归档工具(下)



Linux shell编程学习条记78:cpio命令——文件和目录归档工具(上)-CSDN博客
https://blog.csdn.net/Purpleendurer/article/details/142095476?spm=1001.2014.3001.5501中,我们研究了 cpio命令 的功能、格式、选项阐明 以及 cpio命令的三种模式,如今我们来通过一些实例来实践一下。
1 应用实例

1.1 创建演示文件和目录


我们使用 echo 命令和输出重定向创建文件f1 和 f2,使用mkdir命令创建目录d1
  1. [purpleendurer @ bash ~] echo "f1" > f1
  2. [purpleendurer @ bash ~] echo "f2" > f2
  3. [purpleendurer @ bash ~] mkdir d1
  4. [purpleendurer @ bash ~] ls
  5. Code  d1  f1  f2
  6. [purpleendurer @ bash ~]
复制代码


1.2 创建归档文件

1.2.1 将当前目录的内容归档

使用命令
   ls | cpio -o > p.cpio
  来将当前目录的内容归档到文件p.cpio。
 命令选项阐明
   
  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2
  3. [purpleendurer @ bash ~] ls | cpio -o > p.cpio
  4. 1 block
  5. [purpleendurer @ bash ~] ls
  6. Code  d1  f1  f2  p.cpio
  7. [purpleendurer @ bash ~]
复制代码

 如果我们想在归档时看到已归档的文件名称,可以使用-v 或 --verbose 选项,即:
   ls | cpio -ov > p.cpio
  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2
  3. [purpleendurer @ bash ~] ls | cpio -ov > p.cpio
  4. Code
  5. d1
  6. f1
  7. f2
  8. p.cpio
  9. 1 block
  10. [purpleendurer @ bash ~] ls
  11. Code  d1  f1  f2  p.cpio
  12. [purpleendurer @ bash ~]
复制代码

1.2.2 将以字母f开头的文件归档

我们可以使用命令
   ls f* | cpio -ov > f.cpio
  或
   find f* | cpio -ov > f.cpio
  将以字母f开头的文件归档。
  1. [purpleendurer @ bash ~] find f*
  2. f1
  3. f2
  4. [purpleendurer @ bash ~] find f* | cpio -ov > f.cpio
  5. f1
  6. f2
  7. f.cpio
  8. 1 block
  9. [purpleendurer @ bash ~] ls
  10. Code  d1  f1  f2  f.cpio  p.cpio
  11. [purpleendurer @ bash ~]
复制代码

1.2.3 将标准输入指定的文件归档

 命令格式:
   cpio -o > 归档文件
  留意:输入所有要归档文件名后,要按Ctrl+D结束。
例如,从标准输入指定将文件f1和目录d1归档到文件k.cpio:

  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2
  3. [purpleendurer @ bash ~] cpio -o > k.cpio
  4. f1
  5. d1
  6. 1 block
  7. [purpleendurer @ bash ~] cpio -t < k.cpio
  8. f1
  9. d1
  10. 1 block
  11. [purpleendurer @ bash ~]
复制代码
1.2.4 使用tar格式归档

cpio命令支持tar格式的归档文件,我们可以使用 -H选项来天生tar格式的归档文件。
例如,将当前目录下 f开头的文件和目录以tar格式归档到d.tar 的命令是
   ls f* | cpio -ov -H tar > f.tar
  选项阐明:
   
  1. [purpleendurer @ bash ~] ls f*
  2. f1  f2
  3. [purpleendurer @ bash ~] ls f* | cpio -ov -H tar > f.tar
  4. f1
  5. f2
  6. 6 blocks
  7. [purpleendurer @ bash ~] cpio -t < f.tar
  8. f1
  9. f2
  10. 5 blocks
  11. [purpleendurer @ bash ~]
复制代码

1.2 查看归档文件的内容

我们可以使用命令
   cpio -t < 归档文件
  或
    cpio --list < 归档文件
  来查看归档文件的内容。
选项阐明:
   
  例如,查看归档文件 f.cpio 和 p.cpio 的内容。
  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2  f.cpio  p.cpio
  3. [purpleendurer @ bash ~] cpio -t < f.cpio
  4. f1
  5. f2
  6. f.cpio
  7. 1 block
  8. [purpleendurer @ bash ~] cpio -t < p.cpio
  9. Code
  10. d1
  11. f1
  12. f2
  13. p.cpio
  14. 1 block
  15. [purpleendurer @ bash ~]
复制代码


 1.3  向归档文件追加文件

例如,将文件f2追加到归档文件k.cpio文件的命令是
    ls f2 | cpio -ovA -O k.cpio
  命令选项阐明
   
  1. [purpleendurer @ bash ~] cpio -t < k.cpio
  2. f1
  3. d1
  4. 1 block
  5. [purpleendurer @ bash ~] ls f2 | cpio -ovA -O k.cpio
  6. f2
  7. 1 block
  8. [purpleendurer @ bash ~] cpio -t < k.cpio
  9. f1
  10. d1
  11. f2
  12. 1 block
  13. [purpleendurer @ bash ~]
复制代码

留意:向归档文件追加文件不能使用输出定向追加  >> 来实现
例如,我们想用输出重定向追加 来将目录d1追加到归档文件k.cpio:
  1. [purpleendurer @ bash ~] rm k.cpio
  2. [purpleendurer @ bash ~] ls f1 | cpio -o > k.cpio
  3. 1 block
  4. [purpleendurer @ bash ~] ls d1 | cpio -o >> k.cpio
  5. 1 block
  6. [purpleendurer @ bash ~] cpio -t < k.cpio
  7. f1
  8. 1 block
  9. [purpleendurer @ bash ~]
复制代码

命令执行的结果是d1未能追加到归档文件k.cpio。
1.4 从归档文件举行还原

1.4.1 从归档文件举行还原,并列出详细信息

例如,我先使用命令 ls f? | cpio -ov  > f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。
然后我们使用命令 rm  f? 删除当前目录下以f开头,文件名长度为2个字符的文件。
接着我便使用命令
   cpio -iv < f.cpio
  来还原。
选项阐明:
   
  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2
  3. [purpleendurer @ bash ~] ls f? | cpio -ov  > f.cpio
  4. f1
  5. f2
  6. 1 block
  7. [purpleendurer @ bash ~] cpio -t < f.cpio
  8. f1
  9. f2
  10. 1 block
  11. [purpleendurer @ bash ~] rm f?
  12. [purpleendurer @ bash ~] ls
  13. Code  d1  f.cpio
  14. [purpleendurer @ bash ~] cpio -iv < f.cpio
  15. f1
  16. f2
  17. 1 block
  18. [purpleendurer @ bash ~] ls
  19. Code  d1  f1  f2  f.cpio
  20. [purpleendurer @ bash ~]
复制代码

如果我们不想使用输入重定向来指定所用的归档文件f.cpio,还可以使用-I 选项来指定归档文件f.cpio。
命令:
   cpio -iv -I f.cpio
  选项阐明:
   
   
  1. [purpleendurer @ bash ~] cpio -iv -I f.cpio
  2. f1
  3. f2
  4. 1 block
  5. [purpleendurer @ bash ~]
复制代码

1.4.2 强制从归档文件中还原

所谓强制,就是还原时直接覆盖原有的文件。
例如,我们先使用命令 ls f? | cpio -ov -O f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。
然后强制从归档文件f.cpio还原文件,命令是:
   cpio -ivu -I f.cpio
  选项阐明:
   
   
  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2
  3. [purpleendurer @ bash ~] ls f? | cpio -ov -O f.cpio
  4. f1
  5. f2
  6. 1 block
  7. [purpleendurer @ bash ~] cpio -ivu -I f.cpio
  8. f1
  9. f2
  10. 1 block
  11. [purpleendurer @ bash ~]
复制代码

1.4.3 从归档文件举行还原时举行反向匹配,指定不解压的文件

例如,我们先使用命令 ls f? | cpio -ov -O f.cpio 将当前目录里以f开头,文件名长度为2个字符的文件归档到文件f.cpio。
然后我们使用命令 rm  f? 删除当前目录下以f开头,文件名长度为2个字符的文件。
接着我们使用命令
   cpio -iv -I f.cpio -f f1
  从归档文件f.cpio还原文件名不是f1的文件。
选项阐明:
   
   
  1. [purpleendurer @ bash ~] ls
  2. Code  d1  f1  f2
  3. [purpleendurer @ bash ~] ls f? | cpio -ov -O f.cpio
  4. f1
  5. f2
  6. 1 block
  7. [purpleendurer @ bash ~] rm f?
  8. [purpleendurer @ bash ~] ls
  9. Code  d1  f.cpio
  10. [purpleendurer @ bash ~] cpio -iv -I f.cpio -f f1
  11. f2
  12. 1 block
  13. [purpleendurer @ bash ~] ls
  14. Code  d1  f2  f.cpio
  15. [purpleendurer @ bash ~]
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4