Como excluir diretórios do tar neste script?

0

Respondendo meu próprio pergunta ontem, eu escrevi um script bash que arquiva todos os diretórios dentro de um diretório definido em seus próprios arquivos archive separados. Eu também defini uma variável para um arquivo que incluiria uma lista de diretórios que eu gostaria de pular. Eu queria que funcionasse algo como o parâmetro --exclude-from para tar , mas obviamente isso não funcionaria. Qual é a melhor maneira de conseguir isso? Eu estou pensando que grep seria o caminho que eu deveria seguir.

#!/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
    
por bskool 02.09.2015 / 10:14

1 resposta

1

Você pode usar o grep para verificar se o diretório está listado em seu arquivo de exclusão, conforme mostrado em esta resposta em 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
    
por 02.09.2015 / 11:07