У меня проблемы с исключением конкретного файла из 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
Так, (развернутая) рассматриваемая командная строка читает:
mksquashfs test test.package -regex -e '*.db'
проблема, Вы не используете regex, Вы используете подстановочный знак оболочки. Согласно mksquashfs
страница справочника, -regex
опция позволяет использование регулярных выражений POSIX, и -wildcards
позволяет "расширенным подстановочным знакам оболочки (globbing) использоваться в, исключают директоров/файлы". Так, просто замените -regex
-wildcards
в той командной строке, и она должна работать.
На мой вопрос ответили в https://stackoverflow.com/questions/45555796/mksquashfs-not-excluding-file
, я должен был использовать подстановочные знаки вместо этого с эти ...
добавленный перед моим исключением как показано ниже. Очень важно включать пространство между ...
и эти *.db
, иначе это не будет работать. Я полагаю, что попробовал этот метод по рекомендации прежде, но не понял, когда я попробовал его, что было пространство между теми двумя.
mksquashfs test test.package -wildcards -e '... *.db'