I am having issues excluding a specific file from a squashfs. I want to be able to exclude all file types ending with *.db but have had no luck.
Whenever I run the mksquashfs command with the arguments to exclude the file, it always includes the file. I have tried many different variants of the command. My test script is below:
#!/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_postThe tree of the test directory is below. Both instances of test.db should be excluded but it does not seem to work.
test
├── test
│ └── test.db
├── test.ab
├── test.cd
├── test.db
├── test.ef
├── test.gh
└── test.sh 2 2 Answers
So, the (unwrapped) commandline in question reads:
mksquashfs test test.package -regex -e '*.db'The problem is, you're not using regex, you're using shell wildcard. As per mksquashfs's manpage, -regex option allows usage of POSIX regular expressions, and -wildcards allows "extended shell wildcards (globbing) to be used in exclude dirs/files". So, just replace -regex with -wildcards in that command line and it should work.
My question was answered at
I needed to use wildcards instead with the ... added in front of my exclusion as shown below. It is very important to include a space between the ... and the *.db, otherwise it will not work. I believe I'd tried this method upon recomendation before, but didn't realize when I tried it that there was a space between those two.
mksquashfs test test.package -wildcards -e '... *.db'