#!/bin/bash # ---------------------------------------------------------------------- # Аутор: Слободан Средојевић <Е-пошта:ssl@uns.ns.ac.yu> # ---------------------------------------------------------------------- # Датум последње измене: 26.9.2003 # ---------------------------------------------------------------------- # Ова скрипта прима два параметра. Први # параметар је директоријум за који се праве инкрементални резервни # примерци а други је одредишни директоријум на /mnt/backup партицији. # ---------------------------------------------------------------------- # ------------- системске наредбе коришћене у овој скрипти ------------- ID=/usr/bin/id; ECHO=/bin/echo; MOUNT=/bin/mount; MV=/bin/mv; CP=/bin/cp; RSYNC=/usr/bin/rsync; # ------------- места са датотекама ------------------------------------ MOUNT_DEVICE=/dev/hda6; SNAPSHOT_RW=/mnt/backup; BACKUP_THIS=/opt/tmp/gentoo-basic; #EXCLUDES=/usr/local/etc/backup_exclude; -bug- # ------------------- сама скрипта ------------------------------------- # Скрипту може да покрене само администратор система. if (( `$ID -u` != 0 )); then { $ECHO "Морате бити администратор како би покренули ову скрипту. Прекидам..."; exit; } fi if [ $# != "2" ]; then $ECHO "Грешка! Програм захтева два параметра."; $ECHO "Употреба: backap.sr <директоријум чији садржај чувате> <назив одредишног директоријума>"; $ECHO "Пример: backup.sr /home/work livecd"; $ECHO "Напомена! Изоставите пратећу косу црту / на крају путање у првом параметру!" ; exit; else # Покушај прикључења партиције на којој се чувају резервни примерци. $MOUNT $MOUNT_DEVICE $SNAPSHOT_RW ; if (( $? )); then { $ECHO "Не могу да прикључим $SNAPSHOT_RW за писање и читање"; exit; } fi; if [ -f $SNAPSHOT_RW/$2/latest-IS ] ; then $ECHO "Припрема инкременталног резервног примерка..." ; mkdir $SNAPSHOT_RW/$2/temp ; $CP -al $SNAPSHOT_RW/$2/`cat $SNAPSHOT_RW/$2/latest-IS`/* $SNAPSHOT_RW/$2/temp ; CURRENT_DATE=`date "+%Y-%m-%d-%H-%M" ` ; $RSYNC -av --delete $1/ $SNAPSHOT_RW/$2/`cat $SNAPSHOT_RW/$2/latest-IS`/ ; $MV $SNAPSHOT_RW/$2/`cat $SNAPSHOT_RW/$2/latest-IS` $SNAPSHOT_RW/$2/temp1 ; $MV $SNAPSHOT_RW/$2/temp $SNAPSHOT_RW/$2/`cat $SNAPSHOT_RW/$2/latest-IS` ; $MV $SNAPSHOT_RW/$2/temp1 $SNAPSHOT_RW/$2/$CURRENT_DATE ; $ECHO $CURRENT_DATE > $SNAPSHOT_RW/$2/latest-IS else $ECHO "Припрема се први резервни примерак. Пажња. Ово може потрајати." ; mkdir $SNAPSHOT_RW/$2 ; date "+%Y-%m-%d-%H-%M" > $SNAPSHOT_RW/$2/latest-IS ; mkdir $SNAPSHOT_RW/$2/`cat $SNAPSHOT_RW/$2/latest-IS` ; $RSYNC -av $1/ $SNAPSHOT_RW/$2/`cat $SNAPSHOT_RW/$2/latest-IS`/ ; fi # Сада одвој партицију... umount $SNAPSHOT_RW ; if (( $? )); then { $ECHO "Не могу да одвојим $SNAPSHOT_RW партицију!"; exit; } fi; echo "Крај" fi