Más o menos lo he conseguido, pero tengo un problema y es que cuando el
rsync actúa sobre una carpeta muy grande se demora mucho y para la siguiente
instrucción me pide la contraseña de sudo y se queda parado hasta que la
introduzco. Podría ejecutar el script como root y quitar el sudo de "sudo
rsync" pero no sé si es la mejor forma. ¿Alguna sugerencia?
Por cierto, el script me ha quedado más o menos así. Aunque me gustaría
pulirlo para que me haga log de errores y muestre el tiempo transcurrido
entre otras cosas:
#!/bin/bash
#backup harddrive variables
UUID='FA00B5BE00B581E5'
DATE=`date +%d-%m-%Y`
FULLDATE=`date '+%d-%m-%Y %H:%M:%S'`
USERNAME=''
BACKUPROOT='/media/'$USERNAME'/Archie/'
BACKUPDIR=$BACKUPROOT'rsync/'$DATE
#PARTITION=`/usr/bin/readlink -f /dev/disk/by-uuid/$UUID`
PARTITION=`readlink -f /dev/disk/by-uuid/$UUID`
TIMER=3
#
echo $FULLDATE
echo 'UUID: ' $UUID
echo 'Drive Partition: ' $PARTITION;
#check drive and partiton match
if /sbin/blkid | grep -s "$PARTITION" | grep -q "$UUID"; then
echo 'Drive and partition match...'
else
exit
fi
#if [ -z "$DIRECTORY" ]; then
#echo 'No directory present...'
#fi
#check if drive mounted
echo 'Check if drive mounted..'
if grep -qs $PARTITION /proc/mounts; then
#its already mounted
MOUNTED='1'
echo 'Drive already mounted...'
#BACKUPDIR=`grep $PARTITION /proc/mounts | awk '{ print $2 }'`
echo 'Directory: ' $BACKUPDIR
else
#not mounted
MOUNTED='0'
echo 'Mounting drive...'
sudo mkdir -p "$BACKUPROOT"
sudo mount /dev/disk/by-uuid/$UUID "$BACKUPROOT"
echo 'Mounted: ' $BACKUPROOT
fi
#countdown before sync
printf "\nStarting Backup..."
until [ $TIMER = 0 ]; do
printf "$TIMER..."
TIMER=`expr $TIMER - 1`
sleep 1
done
echo ''
#perform home backup
mkdir -p "$BACKUPDIR"
echo "Created backup directory "$BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable /home $BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable --exclude 'tmp' --exclude
'cache' --exclude 'run' /var $BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable /etc $BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable /usr/local $BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable /opt $BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable /media/$USERNAME/Trabajo
$BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable
/media/$USERNAME/Multimedia $BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable /media/$USERNAME/Otros
$BACKUPDIR
sudo rsync -avzHP --stats --delete --human-readable --exclude 'Pelis'
--exclude 'Series' /media/$USERNAME/Descargas $BACKUPDIR
#clean up
if [ $MOUNTED = 0 ]; then
#unmount and remove dir
echo 'Unmounting drive...'
sudo umount "$PARTITION"
sudo rmdir "$BACKUPROOT"
else
echo 'Leaving drive mounted...'
fi