La idea es que los respaldos tengan un mismo esquema variando solo el número de la BD. Tengo el siguiente código:
Código:
el script debe de ser llamado: script.sh directorio/donde/estan/los/pgdumps/#!/bin/bash
echo 'INICIANDO SCRIPT'
USUARIO='mi_usuario' # El usuario que tendrá permisos sobre las BDs
DIRECTORIO=$1 # Donde se encuentran los archivos SQL de los respaldos. Se tiene que pasar como parámetro.
ARCHIVOS=($(ls -t $DIRECTORIO))
NUMARCHIVOS=${#ARCHIVOS[*]} # Calcula el número de archivos
INDICE=0
echo 'INICIANDO BUCLE'
while [ $INDICE -lt $NUMARCHIVOS ]; do
#echo ${ARCHIVOS[$INDICE]}
if [[ ${ARCHIVOS[$INDICE]} =~ base([0-9]{2})(.*).pgdump ]] # Debe tener el formato baseXX-DD-MM-YYYY.pgdump
then
BASEDATOS='base'${BASH_REMATCH[1]} # El nombre de la Base de Datos
echo '------------- INICIO '$BASEDATOS
dropdb $BASEDATOS # Eliminando 'versiones' anteriores
createdb -E LATIN1 -O $USUARIO $BASEDATOS # Creando...
psql -U $USUARIO -d $BASEDATOS -f $1${ARCHIVOS[$INDICE]} # Montando la BD conrrespondiente
psql -c "ALTER DATABASE $BASEDATOS SET DateStyle TO 'SQL, DMY'" # Cambiando el esquema de fechas
mv $1${ARCHIVOS[$INDICE]} tmp/$1${ARCHIVOS[$INDICE]}
echo $1${ARCHIVOS[$INDICE]}
echo '----------------- FIN '$BASEDATOS
fi
let INDICE++
done
exit 0
Funciona: elimina, crea y monta los datos... pero hay un problema al intentar moverlos. Me aparece el siguiente mensaje de error:
Cita:
... con todo y esos símbolos. El directorio tmp/ esta en el mismo nivel donde se encuentra el script. Los archivos y el directorio tienen permisos 777.mv: no se puede mover �respaldos/junio2008/base12_10-06-08.pgdump� a �tmp/respaldos/junio2008/base12_10-06-08.pgdump�: No existe el fichero o el directorio
¿Por qué aparecen dichos símbolos?. Agradezco cualquier comentario u observación sobre mi script (apenas me adentro en Bash por esto). Estoy trabajando con Postgres 8.2.

PD: ¿será posible ejecutar los archivos en órden?.. que ahora los hace salteados; base09, base50, base12, etc.., preferiría fuera base01, base02, base03... etc.
... probaré 
. Gracias, igual lo probaré

