Вот внутренняя часть задания резервного копирования, которое проверяет наличие смонтированного жесткого диска на основе USB. Было бы легко изменить его для других целей и затем продолжать вызывать его через cron или, возможно, запустить его в фоновом режиме с циклом сна вокруг ключевых частей. Этот сценарий позволяет вам указать, где USB-диск может быть найден (sdd), но было бы довольно легко изменить его для поиска USB-накопителя по идентификатору диска.
Источником резервной копии является смонтированный диск NFS, но, очевидно, его можно изменить / удалить при необходимости.
В середине есть цикл for, который указывает места для резервного копирования
# V1.01
# Uses variable for usbdisk partition
started=`date`
usbdisk='sdd1'
if [ $(mount | grep -c /mnt/usbdisk) != 1 ]; then
echo "USB disk is not mounted - trying to mount..."
mount /dev/$usbdisk /mnt/usbdisk
if [ $(mount | grep -c /mnt/usbdisk) != 1 ]; then
echo "USB disk still not mounted - alerting admins and quitting"
echo "USB disk is not mounted on TUX9 so backup cannot continue" | mail -s "TUX9 backup problem" myemailaddress@here.tld
exit 1
fi
fi
if [ $(mount | grep -c /mnt/nas) != 1 ]; then
echo "NAS NFS mount is not present - trying to mount..."
mount -t nfs -o proto=tcp,port=2049 mynas3:nas /mnt/nas
if [ $(mount | grep -c /mnt/nas) != 1 ]; then
echo "NAS NFS mount is still not present - alerting admins and quitting"
echo "NAS NFS mount is not present on TUX9 so backup cannot continue" | mail -s "ASLTUX9 backup problem" myemailaddress@here.tld
exit 1
fi
fi
echo "All mount points present - backup starting..."
for i in /boot / /home /var /mnt/nas
# for testing for i in /boot
do
if [ $i = "/" ]; then
rsync -axv --delete root@tux8.test.lan:$i /mnt/usbdisk/backup/root
elif [ $i = "/mnt/nas" ]; then
rsync -axv --delete $i/ /mnt/usbdisk/backup/nas
else
rsync -axv --delete root@tux8.test.lan:$i/ /mnt/usbdisk/backup$i
fi
done
echo done, started at $started, finished at `date`
echo "Backup of NAS3 and TUX8 to USB disk on TUX9 done. Started at $started, finished at `date`" | mail -s "TUX9 backup completed" myemailaddress@here.tld