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'

Проблема в том, что вы не используете регулярные выражения, вы используете групповой символ оболочки. Согласно mksquashfsManpage, -regex опция позволяет использовать регулярные выражения POSIX, и -wildcards позволяет использовать "расширенные подстановочные знаки оболочки (globbing) в исключаемых каталогах / файлах". Итак, просто замени -regex с -wildcards в этой командной строке, и это должно работать.

Другие вопросы по тегам