我想用一个同名的新文件覆盖已经位于 cpio 文件夹中的文件。我在查找工作参数时遇到了一些麻烦。我发现这个网页可能有解决方案,但我不确定:
https://drumperl.wordpress.com/2014/01/12/forcing-cpio-to-overwrite-files/
不管怎样,我尝试这样做:
echo usr/share/plymouth/themes/homeworld/debian.png | cpio -pumd /home/ziomario/Scrivania/PassT-Cubic/kernels/initrd.img-5.10.0-18-amd64
请注意,我要在 cpio 存档 (initrd.img-5.10.0-18-amd64) 中复制的文件名为“debian.png”,并且其中有一个同名的文件。
我上面发出的命令出现以下错误:
“initrd.img-5.10.0-18-amd64”存在,但不是 aa 目录。函数“打开”失败:不是目录
非常感谢。
答案1
您编写的命令期望目标是目录,而不是 cpio 存档文件。
该-p
标志使得cpio
在复制传递模式下运行。来自cpio 手册页:
复制传递模式
在复制传递模式下,cpio 将文件从一个目录树复制到另一个目录树,结合复制出和复制入步骤,而不实际使用存档。它从标准输入读取要复制的文件列表;它将复制它们的目录作为非选项参数给出。
如果您提取 cpio 存档,并且想要替换提取的目录中的文件,这非常有用。
没有一种简单的方法可以覆盖cpio
存档中的文件。您需要提取存档,替换文件(您的命令可能会派上用场)并创建一个新存档。