使用cpio,解压时可以更改文件路径吗?

问题描述 投票:0回答:1

通常,我会执行

rpm2cpio $rpm | cpio -idmv
但这会将确切的文件路径提取到本地文件夹中

./usr/local/mycompany/myapp/bin/app
./usr/local/mycompany/myapp/resource/...

是否可以在提取过程中重写文件路径,以便它们提取到

./myapp/bin/app
./myapp/resource/...
bash unix path centos cpio
1个回答
0
投票

提取过程中是否可以重写文件路径

GNU

cpio
提供了
-r
选项,可以在提取过程中以交互方式重命名文件(“复制”)。但我想你想要一些自动的和/或可编写脚本的东西,并且没有记录的
cpio
功能提供此功能。

但是,在提取后移动所需的子树,然后删除额外的、可能是空的父目录应该是快速和直接的:

mv ./usr/local/mycompany/myapp .
test "$(realpath .)" != / && rm -rf ./usr

这增加了一点保护,防止以特权用户身份从文件系统根运行这些命令而引起的灾难,但总的来说,您不应该以特权运行它。

© www.soinside.com 2019 - 2024. All rights reserved.