#!/bin/sh
# Carpetas temporales
temp_origen="/tmp/particion_origen"
temp_destino="/tmp/particion_destino"

# Función que muestra un mensaje de error y sale con un valor de retorno
function msj_error() {
    printf "ERROR: %s!\n" "$1"
    exit $2
}

# El primer parámetro es el archivo de configuración
if [ -z "$1" ]; then
    config_file="`dirname $0`/config"
else
    config_file="$1"
fi;
! [ -e "$config_file" ] && msj_error "No se encuentra el archivo de configuración $config_file" 1
source "$config_file"

# Validación de errores
[ ${#ORIGEN[*]} -ne ${#DESTINO[*]} ] && msj_error "El número de particiones origen y destino no es el mismo" 1
[ -e "$temp_origen" ] && msj_error "Ya existe una carpeta $temp_origen" 1
[ -e "$temp_destino" ] && msj_error "Ya existe una carpeta $temp_destino" 1

mkdir "$temp_origen" || msj_eror "No se ha podido crear la carpeta $temp_origen" 1
mkdir "$temp_destino" || msj_error "No se ha podido crear la carpeta $temp_destino" 1

for i in `seq 1 ${#ORIGEN[*]}`; do
    printf "Copiando dispositivo %s a %s ....\n" ${ORIGEN[$i]} ${DESTINO[$i]}
    mount /dev/disk/by-uuid/${ORIGEN[$i]} "$temp_origen" || msj_error "No se puede montar ${ORIGEN[$i]}" 2
    mount /dev/disk/by-uuid/${DESTINO[$i]} "$temp_destino" || msj_error "No se puede montar ${DESTINO[$i]}" 2
    rsync $RSYNC_OPTIONS "$temp_origen/" "$temp_destino" || msj_error "Error al hacer la copia de archivos con rsync" 2
    umount "$temp_origen" || msj_error "Error al desmontar $temp_origen" 3
    umount "$temp_destino" || msj_error "Error al desmontar $temp_origen" 3
done; 

rmdir "$temp_origen" || msj_eror "No se ha podido borrar la carpeta $temp_origen" 1
rmdir "$temp_destino" || msj_error "No se ha podido borrar la carpeta $temp_destino" 1
