Como otimizar o processo de backup do SVN no script bash?

1

Eu tenho um script de shell em execução no AIX que fará o backup de cada repositório SVN todas as noites. A execução é a seguinte:

Faça o download de cada repositório salvo como um arquivo de despejo:

svnrdump on repo_A

svnrdump on repo_B

svnrdump on repo_X ## X is the subsequent number of repository

Após a conclusão do processo de download, o conteúdo será compactado:

bzip2 --compress repo_A_yyyymmdd.dump

bzip2 --compress repo_B_yyyymmdd.dump

bzip2 --compress repo_X_yyyymmdd.dump ## X is the subsequent number of backup copy

Em seguida, farei uma limpeza nas cópias de backup removendo as cópias com mais de 5 dias de hoje (preciso manter apenas as últimas 5 cópias de backup mais recentes):

rm 'ls -t repo_A_????????.dump.bz2 | tail -n +6'

rm 'ls -t repo_B_????????.dump.bz2 | tail -n +6'

rm 'ls -t repo_X_????????.dump.bz2 | tail -n +6' ## X is the subsequent number of backup copy

Minha pergunta

Existe uma maneira de otimizar este código, colocando os repo name em uma matriz e, em seguida, executar todos os comandos para cada repo em um loop?

    
por huahsin68 10.04.2013 / 09:37

2 respostas

1

Ou alternativamente:

repodir=/some/path
backupdir=/some/otherpath
maxagedays=6
for repo in repo_A repo_B repo_X; do
   svnadmin dump $repodir/$repo | bzip2 -9 > $backupdir/$repo-'date +%F'.dump.bz2
done
find /$backupdir -type f -iname *dump.bz2 -mtime +$maxagedays -exec rm -f {} \;
    
por 10.04.2013 / 10:32
1

Tente algo assim:

Primeiro formulário, matriz de sufixos:

#!/bin/bash

array=(A B C D E F)
for i in "${array[@]}"
do
    echo svnrdump on repo_$i
    echo bzip2 --compress "repo_$i.dump"
done

Segundo formulário, se houver nomes de repo mais diversificados:

#!/bin/bash

while read REPO; do
    echo svnrdump on  "${REPO}"
    echo bzip2 --compress "${REPO}".dump
done << REPOLIST
repo0
repo1
repo2
repo3
REPOLIST

Você terá que adicionar todos os repos ao REPOLISTA.

    
por 10.04.2013 / 10:25

Tags