[FSUG PD] Script di backup con rsync e mount dell'unità

Andrea Brugiolo nick a fsugpadova.org
Ven 28 Dic 2012 15:26:39 CET


Io uso lo script che allego per copiare un disco su un altro dopo
avere verificato che sono montati e che sono i dischi che voglio.

Per fare questo mi baso sull'UID della partizione, perche' voglio
essere certo di operare sulle partizioni a me note; non so se questo
puo' andare bene per te ma magari ti puo' dare qualche suggerimento...

Ciao :-)

Andrea

-- 
Andrea Brugiolo                            nick a fsugpadova.org
Free Software Users Group Padova     http://www.fsugpadova.org
-------------- parte successiva --------------
#!/bin/bash

# Sync master to slave volume
#
# lun  2 lug 2012, 23.40.15, CEST
#
# Copying: GPL v. 3 or later


# Configuration

NOTAV="NOT AVAILABLE"
TAG="$(basename $0)[$$]"
CONF=~/.syncms.conf
if [ -s ${CONF} ]; then
	source ${CONF}
else
	echo "Cannot find conf file"
	exit -1
fi
EXCLUDES=""
if [ -n "${EXCLUDE}" ]; then
	for tok in ${EXCLUDE}; do
		EXCLUDES=" ${EXCLUDES} --exclude $tok "
	done
fi


# Functions

log () {

	/usr/bin/logger -t ${TAG} -s $@

}

assert_mounted_volumes () {

	log "Checking volumes availability..."
	MASTERDEVICE=$(/sbin/findfs UUID=${MASTERUUID} 2> /dev/null)
	log "Master device is ${MASTERDEVICE:-${NOTAV}}"

	SLAVEDEVICE=$(/sbin/findfs UUID=${SLAVEUUID} 2> /dev/null)
	log "Slave device is ${SLAVEDEVICE:-${NOTAV}}"
	
	/bin/mount | /bin/grep "${MASTERDEVICE} on ${WDIR}/${MASTER}" > /dev/null && \
	/bin/mount | /bin/grep "${SLAVEDEVICE} on ${WDIR}/${SLAVE}" > /dev/null && \
	log "Both volumes are mounted OK" && return 0

	log "Either one or both volumes are not mounted" && return 1

}

sync () {

	assert_mounted_volumes

	if [ "$?" == "0" ]; then
		log "Start syncing at $(LANG=C date)" 
		rsync -av --progress --delete ${EXCLUDES} ${WDIR}/${MASTER}/${COMPONENT}/ ${WDIR}/${SLAVE}/${COMPONENT}/
		log "Sync finished at $(LANG=C date)"
		return 0
	else
		log "Will do nothing. Exit"
		return 1
	fi

}


# Run!

log "Start at $(LANG=C date)"

sync

log "All done at $(LANG=C date)"
-------------- parte successiva --------------
WDIR="/var/local/users"
MASTER="andrea-master"
SLAVE="andrea-slave"
COMPONENT="andrea"
MASTERUUID="zf7b6fa7-a321-413f-a7d8-f812f7a56c30"
SLAVEUUID="97e41355-48e5-4fe0-bdd6-fc3c292c07f7"


Maggiori informazioni sulla lista fsug-pd