![mksquashfs 不排除文件](https://linux22.com/image/1085194/mksquashfs%20%E4%B8%8D%E6%8E%92%E9%99%A4%E6%96%87%E4%BB%B6.png)
我在从 squashfs 中排除特定文件时遇到了问题。我希望能够排除所有以 *.db 结尾的文件类型,但一直没有成功。
每当我运行带有排除文件参数的 mksquashfs 命令时,它总是会包含该文件。我尝试了该命令的许多不同变体。我的测试脚本如下:
#!/bin/bash
OPT="-regex -e '*.db' "
echo -e "Creating squashfs..."
mksquashfs test test.package ${OPT}
echo "Ran the following command: mksquashfs pf test.package ${OPT}"
echo -e "Uncompressing squashfs..."
mkdir pf_post
unsquashfs -f -d test_post/ test.package
echo
read -p "press any key to continue..."
rm test.package
rm -r test_post
测试目录的树如下。应排除 test.db 的两个实例,但似乎不起作用。
test
├── test
│ └── test.db
├── test.ab
├── test.cd
├── test.db
├── test.ef
├── test.gh
└── test.sh
答案1
因此,有问题的(展开的)命令行如下:
mksquashfs test test.package -regex -e '*.db'
问题是,您没有使用正则表达式,而是使用了 shell 通配符。根据 的mksquashfs
手册页,-regex
选项允许使用 POSIX 正则表达式,并允许“在排除目录/文件中使用扩展的 shell 通配符 (globbing)。因此,只需在该命令行中-wildcards
替换即可。-regex
-wildcards
答案2
我的问题已得到答复https://stackoverflow.com/questions/45555796/mksquashfs-not-clusion-file
我需要改用通配符,并...
在排除项前面添加 ,如下所示。在 和 之间添加空格非常重要...
,*.db
否则它将不起作用。我相信我以前曾根据建议尝试过这种方法,但尝试时没有意识到这两个之间有一个空格。
mksquashfs test test.package -wildcards -e '... *.db'