web-dev-qa-db-ja.com

7zは除外ファイルからディレクトリを除外していません

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/*"

アーカイブは作成されますが、除外ファイルのディレクトリが使用されます。

私が考えたこと:

  • 除外ファイルはUTF-8でエンコードされています
  • 除外ファイルは私のスクリプトと同じディレクトリにあります
  • 絶対パスと相対パスを試しました(つまり、/path/to/exclude.lst./exclude.lst
  • 除外ファイル形式:excl_dir/excl_dir/*、エントリ後の改行

除外ファイルのエントリは正しいですか?はいの場合、他に何が間違っている可能性がありますか?

編集:

Exclude.lstのエントリがexcl_dirの場合、7zは実際にはこのフォルダを除外します。ただし、名前にこの文字列が含まれているすべてのファイル。

1
twenty7

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のバグのようです。

0
terdon