script para compactar vários arquivos

1

Eu tenho um script que gera backup e encontra arquivos com mais de 30 dias e os compacta. Agora o problema que estou enfrentando é se os arquivos são mais de um do que como eu posso editar o script para que ele também comprima todos esses arquivos. Abaixo está a função de localização que estou usando. Por favor, ajude.

Time=+30
PATH_TO_DUMP=/home/tarun/Desktop/Backup

#Find any Backup File defined by the time constraint
file="$(find $PATH_TO_DUMP -type f -mtime $Time)"

#To verify if $file is empty or has some value
if [ ! -n "$file" ]; then
echo "No Earlier Backups were found to compress" >> $PATH_TO_LOG
else
echo "Earlier Backups $file will be compressed" >> $PATH_TO_LOG
gzip $file
fi
    
por Tarun 28.06.2013 / 12:41

2 respostas

4

Você pode fazer isso com uma pequena modificação

(canalize a saída find para o loop while fazendo uma leitura )

Time=+30
PATH_TO_DUMP=/home/tarun/Desktop/Backup
#Find any Backup File defined by the time constraint

find $PATH_TO_DUMP -type f -mtime $Time | while read file
do

  #To verify if $file is empty or has some value
  if [ ! -n "$file" ]; then
    echo "No Earlier Backups were found to compress" >> $PATH_TO_LOG
  else
    echo "Earlier Backups $file will be compressed" >> $PATH_TO_LOG
    gzip "$file"
  fi

done
    
por Emmanuel 28.06.2013 / 16:50
2

Comprima todo o arquivo com tar em vez de gzip :

tar jcvf new_file.tar.bz2 $file

tar armazena o arquivo% -j to bzip do arquivo tarredo ( -z use gzip )
-c para criar ( -x para extrair)
-v verbose
-f arquivo para criar (ou abrir)

Para extrair:

tar jxvf new_file.tar.bz2

Caso contrário, se você quiser um arquivo para cada arquivo:

echo $file | xargs gzip

xargs lê itens da entrada padrão, delimitados por espaços em branco (que podem ser protegidos        com aspas duplas ou simples ou uma barra invertida) ou novas linhas, e executa        o comando (o padrão é / bin / echo) uma ou mais vezes com qualquer        argumentos seguidos por itens lidos da entrada padrão.

    
por asclepix 28.06.2013 / 15:05