我正在使用tar归档一组非常大(多 GB)的bz2文件。
如果我tar -tf file.tar用来列出存档中的文件,这需要很长时间才能完成(~10-15 分钟)。
同样,完成cpio -t < file.cpio所需的时间也一样长,加减几秒钟。
因此,从存档中检索文件(tar -xf file.tar myFileOfInterest.bz2例如通过)也很慢。
是否有一种存档方法可以在存档中保留一个随时可用的“目录”,以便可以快速检索存档中的单个文件?
例如,某种目录存储指向存档中特定字节的指针,以及要检索的文件的大小(以及任何其他文件系统特定的详细信息)。
是否有一个工具(或参数tar或cpio)允许归档中的文件的高效检索?
我需要制作一个正在运行的 linux 系统的副本,它(包含在 / 中,而新位置在 /mnt/sdb5 中)似乎在 /dev 中包含了大量的硬链接、软链接和特殊文件;会在cpio不应用额外魔法的情况下处理这项工作吗?
目前已知的保护措施:
root=/dev/sdb5;在删除之前,请进行完整的分区备份。但是,仍然不会因为 cpio 错过了一些标志并削弱了权限/节点类型/软链接或硬链接而浪费时间。
使用哪种工具/要避开哪些水下岩石?
刚刚了解到cpio有3种模式:copy-out、copy-in和pass-through。
我想知道在拷出和拷入模式下 cpio 相对于 tar 的优缺点是什么。什么时候用cpio比较好,什么时候用tar?
传递模式下 cpio 与 cp 的类似问题。
感谢致敬!
我正在尝试解压 initrd 图像:
# file /boot/initrd.img-4.11.0-14-generic
/boot/initrd.img-4.11.0-14-generic: ASCII cpio archive (SVR4 with no CRC)
# mkdir /tmp/initrd; cd /tmp/initrd
# cpio -i -d -H newc --no-absolute-filenames -F /boot/initrd.img-4.11.0-14-generic
194 blocks
# ls -R
.:
kernel
./kernel:
x86
./kernel/x86:
microcode
./kernel/x86/microcode:
GenuineIntel.bin
Run Code Online (Sandbox Code Playgroud)
所以cpio 只提取./kernel存档的子目录。但在其中lsinitramfs显示更多文件:
# lsinitramfs /boot/initrd.img-4.11.0-14-generic
/boot/initrd.img-4.11.0-14-generic
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
.
lib
lib/libnss_files.so.2
lib/cryptsetup
...
bin/egrep
init
run
Run Code Online (Sandbox Code Playgroud)
如何获取所有存档内容?