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
私の質問は https://stackoverflow.com/questions/45555796/mksquashfs-not- exclude-file で回答されました
以下に示すように、除外の前に...
を追加して、代わりにワイルドカードを使用する必要がありました。 ...
と*.db
の間にスペースを含めることは非常に重要です。そうしないと機能しません。私は以前にこの方法を試したことがあると思いますが、試してみたところ、2つの方法の間にスペースがあることに気づきませんでした。
mksquashfs test test.package -wildcards -e '... *.db'
したがって、問題の(ラップされていない)コマンドラインは次のようになります。
mksquashfs test test.package -regex -e '*.db'
問題は、正規表現を使用しておらず、シェルのワイルドカードを使用していることです。 mksquashfs
のマンページに従って、-regex
オプションは、POSIX正規表現の使用を許可し、-wildcards
は、「拡張シェルワイルドカード(グロビング)をexclude dirs/filesで使用する」ことを許可します。したがって、-regex
と-wildcards
そのコマンドラインで、それは動作するはずです。