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