2017-08-07 18 views
0

squashfsから特定のファイルを除外する問題が発生しています。私は* .dbで終わるすべてのファイルタイプを除外できるようにしたいが、運がない。mksquashfsがファイルを除外しない

ファイルを除外する引数を指定して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 

ワイルドカードに切り替えて部分的に修正しました。最初の.dbファイルは除外されましたが、2番目のサブディレクトリは除外されませんでした。最も低いディレクトリの最初のファイルだけでなく、すべての '.db'ファイルを除外するように指示する方法はありますか?以下は、最初のファイルタイプを除外したコードです。どちらのソリューションも、依然としてサブディレクトリ '.dbd'ファイルを除外しませんでした。

mksquashfs test test.package -wildcards -e '*.db' 

mksquashfs test test.package -regex -e '\.db$' 

上記の解決策のいくつかは、以下のリンクから提供されたが、私は「.DB」すべてのファイルを除外することができませんでした行き止まりを打ちます。 https://askubuntu.com/questions/628585/mksquashfs-not-excluding-file

答えて

1

この情報はワイルドカード/正規表現式に加えて、SquashfsはRELEASE-README

に含まれている、ファイルは「アンカー」または 「非アンカー」することができ除外する。アンカー付きの除外は、 ディレクトリのルートから一致するものであり、どこにもアンカーされていない除外はどこにもマッチしません。 ディレクトリ階層 "a/b/c/a/b"を指定すると、固定された除外 "a/b"はディレクトリ階層のルートで "a/b"と一致しますが、 ディレクトリ "c"内の "/ a/b"サブディレクトリであるのに対し、 のアンカー付き除外はありません。

トップレベルディレクトリからデフォルト除外のマッチで

非アンカー除外

が、多くの場合、ソースディレクトリ内の任意の場所に一致するファイルを除外すると便利 です。 excludeを "..."であらかじめ固定して指定すると、アンカーされていない除外項目を使用できます。

例:

  1. mksquashfs例のimage.sqsh -wildcards -e '... * .gzを'

    どこかのソースディレクトリにある "* .gzをを" 一致するファイルを除外します。 たとえば、 "example.gz"、 "test/example.gz"、 "test/test/example.gz"と一致します。

  2. mksquashfs例image.sqsh -wildcards -e '... [Ttの] EST/*。gzで'

    は、一致するファイルを除外 "* .gzを" "テスト" または "テスト" と呼ばれるディレクトリ内のソースディレクトリ内のどこにでも発生します。

    また、拡張ワイルドカードを使用すると、ネガティブマッチングも可能です。

  3. mksquashfs例image.sqsh -wildcards -e '...!(データ)が.gz'

    が持つものを除いて、どこでもソースディレクトリに "* .gzをする" に一致するすべてのファイルを除外名前の "data"。

+0

3つの点とスペースが必要なものだったように見えます!それは問題を解決しました!ありがとう! – tardis89

+0

'mksquashfs test test.package -wildcards -e '... * .db''はそれを修正するために必要なものでした。 – tardis89

関連する問題