-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackup-home-v1.0.sh
66 lines (55 loc) · 1.84 KB
/
backup-home-v1.0.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
# Funcion que devuelve la hora actual en formato UTC.
# Ejemplo: 2021-05-14_16-26-31Z
function now() {
date -u +"%Y-%m-%d_%H-%M-%S"Z
}
#Toma el directorio actual como base de ejecucion
BASEDIR=$(dirname "$0")
#Toma el nombre de este mismo script
BASENAME=$(basename -- "$0")
#Compone los paths de logs
LOGDIR=$BASEDIR/$BASENAME'.logs'
LOGFILE=$LOGDIR/$BASENAME'_'`now`.log
ORIGEN=/home
DESTINO=/media/backups
#Funcion que escribe los logs
function writelog() {
echo "$BASENAME: $(now) - $1" >&1 | tee -a $LOGFILE
}
# Se valida la existencia del directorio de logs. Se crea en
# caso de ser necesario
if [ ! -d $LOGDIR ]; then
mkdir $LOGDIR
fi
writelog "--------------------------------------"
writelog "--Iniciando script de sincronización--"
writelog "--------------------------------------"
# Se indican los argumentos obligatorios que recibira rsync
#-v: modo verbose muestra que va haciendo
#-r: lo hace recursivamente
#-z: comprime durante la transferencia
#-a: copia todo incluidos links simbolicos
ARGUMENTOSRSYNC=-vrza
# Se indican los argumentos opcionales que recibira rsync
# Aca verifico si tengo un argumento
if [ $# -eq 1 ]; then
archivo_exclusiones="$1"
writelog "Argumento de exclusiones detectado, leyendo exclusiones..."
# Verifica si el archivo existe
if [ ! -f "$archivo_exclusiones" ]; then
writelog "El archivo de exclusiones indicado '$archivo_exclusiones' no existe."
exit 1
fi
# Construir las opciones --exclude para rsync
while read -r linea; do
ARGUMENTOSRSYNC+=" --exclude '$linea'"
done < "$archivo_exclusiones"
fi
ARGUMENTOSRSYNC+="$ORIGEN/"
ARGUMENTOSRSYNC+="$DESTINO/"
writelog "Los argumentos finales para rsync son: $ARGUMENTOSRSYNC"
# Se arma la ejecucion de rsync. Se indican argumentos, origen,
# destino y se envian las salidas std y err al archivo de log
#rsync $ARGUMENTOSRSYNC
exit 0