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/*
, 項目を折り返す
除外ファイルのエントリは正しいですか?それでは質問がありますか?
編集する:
7zは、実際にExcept.lstのエントリが.のみの場合にexcl_dir
フォルダを除外します。名前にこの文字列を含むすべてのファイルにも同様です。
答え1
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
。