mksquashfs 不排除文件

mksquashfs 不排除文件

我在从 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'

相关内容