我需要运行:
rpm2cpio mypackage.rpm | cpio -idmv
Run Code Online (Sandbox Code Playgroud)
但是,我需要将输出放在不同的目录中。有没有比做更优雅的解决方案
mv <output> <to/other/directory>
Run Code Online (Sandbox Code Playgroud)
执行提取后?
我试图将单个文件从 .cpio 文件复制到不同的目录而不是其中的树。我非常确定这是可能的,我的老师做到了。
我试过这个:
# cpio -i -F backup.cpio sub1/sub2/example.php
Run Code Online (Sandbox Code Playgroud)
但这并没有提取我想要提取的文件示例。我尝试添加第三个参数,但它不起作用。有什么建议?哦,我正在运行 Ubuntu。
我有一个目录中的文件列表,我想创建一个存档格式文件。我使用 CPIO 将文件创建为
ls | cpio -ov -H crc > demo.cpio
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的 cpio 结构
struct cpio_newc_header {
char c_magic[6];
char c_ino[8];
char c_mode[8];
char c_uid[8];
char c_gid[8];
char c_nlink[8];
char c_mtime[8];
char c_filesize[8];
char c_devmajor[8];
char c_devminor[8];
char c_rdevmajor[8];
char c_rdevminor[8];
char c_namesize[8];
char c_check[8];
};
Run Code Online (Sandbox Code Playgroud)
我可以通过使用 c_filesize,c_namesize 来获取头文件中的元数据、路径名、文件数据。我可以根据 c_filesize 获取文件数据,但是在获取文件数据后,填充了一些额外的位,即在文件数据之后在下一个标题之前。
00000230: 6e63 6965 7322 3a5b 5d0d 0a7d 0d0a 0000 ncies":[]..}....
00000240: 3037 3037 3032 3030 3636 4246 3838 3030 0707020066BF8800
Run Code Online (Sandbox Code Playgroud)
在这里我们可以观察到在 '}' 之后填充了一些额外的字节。我用四的倍数教了它的四舍五入,但我观察到了一些不是四的倍数的其他数据
00000450: 2066 6f72 2063 7279 7074 …Run Code Online (Sandbox Code Playgroud)