이 스크립트의 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

관련 정보