Bashスクリプトで、7zでアーカイブを作成し、いくつかのディレクトリを除外したいと思います。 1つのエントリのみを含む除外ファイルを作成しました。
excl_dir/
私のスクリプト:
#!/bin/bash
archiveName="my_archive"
base="/path/to/base"
7z a -mx=9 -t7z [email protected] "${archiveName}.7z" "${base}/files/*"
アーカイブは作成されますが、除外ファイルのディレクトリが使用されます。
私が考えたこと:
/path/to/exclude.lst
と./exclude.lst
)excl_dir/
、excl_dir/*
、エントリ後の改行除外ファイルのエントリは正しいですか?はいの場合、他に何が間違っている可能性がありますか?
編集:
Exclude.lstのエントリがexcl_dir
の場合、7zは実際にはこのフォルダを除外します。ただし、名前にこの文字列が含まれているすべてのファイル。
7z
はパターンのみを除外でき、末尾のスラッシュは無視するようです。回避策として、除外する代わりに、含めるファイルのリストを渡します。
find . -not -path './excl_dir/*' -not -path './excl_dir' > /tmp/include.lst
7z a -mx=9 -t7z -i@/tmp/include.lst foo.7z
これは7z
のバグのようです。