回答私のもの質問昨日は、定義されたディレクトリ内のすべてのディレクトリを別々のアーカイブファイルとして保持する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