このスクリプトのtarからディレクトリをどのように除外できますか?

このスクリプトのtarからディレクトリをどのように除外できますか?

回答私のもの質問昨日は、定義されたディレクトリ内のすべてのディレクトリを別々のアーカイブファイルとして保持するbashスクリプトを作成しました。また、スキップしたいディレクトリのリストを含むファイルの変数も定義しました。同じことを願っています。- 入らないようにするパラメータtarがありますが、明らかにこれは機能しません。これを達成するための最良の方法は何ですか?これがgrep私が行くべき道だと思います。

#!/bin/bash

#START
TIME=`date +%Y-%m-%d_%Hh%Mm`     # Append date and time to backup file
SRCDIR=/srv                      # Location of directories to backup
DESDIR=/srv/backup               # Destination of backup files
EXCLUDE=exclude.txt  # File which defines what to exclude from archiving

for dir in $SRCDIR/*/
do
  base=$(basename "$dir")
  tar -cpzf $DESDIR/$base-$TIME.tar.gz $dir
done
#END

答え1

grep を使用して、ディレクトリが除外ファイルに一覧表示されていることを確認できます。SOへのこの答え:

#!/bin/bash

#START
TIME=`date +%Y-%m-%d_%Hh%Mm`     # Append date and time to backup file
SRCDIR=/srv                      # Location of directories to backup
DESDIR=/srv/backup               # Destination of backup files
EXCLUDE=exclude.txt  # File which defines what to exclude from archiving

for dir in $SRCDIR/*/
do
  base=$(basename "$dir")
  if grep -Fxq "$base" $EXCLUDE
  then
    echo "$base excluded"
  else
    tar -cpzf $DESDIR/$base-$TIME.tar.gz $dir
  fi
done
#END

関連情報