backupscript hilfe

Message
Author
arno

backupscript hilfe

#1 Post by arno »

hi @all
habe mir ein backupscript gebastelt und hab da eine befehl für das fullbackup:

tar -czf $backdir/fullbac.www.$Wochentag.$Datum.tar.gz>>$logdir/backup.log $wwwdir

bei dem ich den tar vorgang in ein logfile schreiben will.
das funktioniert aber nicht. bei den anderen befehlen zb.:

find /etc -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz>>$logdir/backup.log

funktioniert es.(grübel, wo liegt der fehler. bin leider scriptanfänger)

das 2.Problem wäre das das log ein einer wurscht geschrieben wird und ich nicht sehe wann das backup vom nächsten tag anfängt.
hat da vielleicht jemand eine tip wie ich das bewerkstelligen kann?

hier ist das ganze script nocheinmal(vielen dank im voraus):

#!/bin/sh


export LANG=de_DE.ISO-8859-1


Datum=$(date +%d%m%Y);
Wochentag=$(date +%A);
Tag=$(date +%w);
logdir=/var/log/backup
backdir=/mnt/zip/backup
wwwdir="/var/www/ /var/log"
#smbmount //Windows2kRechner/backup /backup -o
#username=Test,password=Test
fullbackup()
{

tar -czf $backdir/fullbac.etc.$Wochentag.$Datum.tar.gz /etc>>/$logdir/backup.log
tar -czf $backdir/fullbac.home.$Wochentag.$Datum.tar.gz /home >>/var/log/backup/backup.log1
tar -czf $backdir/fullbac.www.$Wochentag.$Datum.tar.gz>>$logdir/backup.log $wwwdir

}
weekend()
{
find /etc -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz>>$logdir/backup.log

find /home -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.home.$Wochentag.$Datum.tar.gz >>$logdir/backup.log

find $wwwdir -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.www.$Wochentag.$Datum.tar.gz >>$logdir/backup.log
}
incremental()
{

find /etc -mtime -1 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz >>$logdir/backup.log
#2>&1 | tee /tmp/back.log

find /home -mtime -1 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.home.$Wochentag.$Datum.tar.gz >>$logdir/backup.log


find $wwwdir -mtime -1 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.www.$Wochentag.$Datum.tar.gz >>$logdir/backup.log
}

if [ "$Wochentag" == "Dienstag" ]
then echo Fullbackup erzeugen;
fullbackup
elif [ "$Wochentag" == "Montag" ]
then echo Weekendbackup erzeugen;
weekend
else [ "$Wochentag" != "Freitag" ]
echo Incremetales Backup erzeugen;
incremental
fi
#umount /backup
exit



mfg
arno

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: backupscript hilfe

#2 Post by max »

um in den Logs optisch zu trennen nutze ich oft so was:

echo "Backup vvon Rechner xy $Datum $Uhrzeit" >> $LOG
Damit du auch Fehler mitloggst solltest du den Fehlerausgabekanal in die Standardausgabe umlenken:
befehl >> $LOG 2>&1

die Kanäle sind durchnummeriert, man kann auch eigene aufmachen, vor einen ">" sollte man sich einfach eine "1" denken.
Das ist der Standardausgabekanal den lenkt man mit sowas, statt auf den Bildschirm in eine Datei.
befehl 1> $DATEI
"2>" in "2" landen die Fehlermeldungen und ein 2>&1 gibt die Ausgabe des 2. Kanals in den 1.

Zu deinen PRoblem:
baue mal bitte ein echo $Datum und echo $Wochentag ein.

Habe die Vermutung das diese nicht stimmen.

Gruss Max

arno

Re: backupscript hilfe

#3 Post by arno »

@max danke für die tips mit der fehlerumleitung.
das mit dem datum ist es glaub ich nicht bei einem echo bekomm ich am anfang das datum gesagt und die anderen backups legt es auch mit:
fullbac.etc.Sonntag.13042003.tar.gz
an.
werde mal bischen weiter basteln hab ja grad wieder was gelernt was ich gleich testen muss *gg*
noch eine frage zu den kanälen?
wieviele giebt es da überhaupt oder sind es eh nur 2?

vielen dank im voraus
arno

panthera

Re: backupscript hilfe

#4 Post by panthera »

und etwas schoener schreiben:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/sh

LANG='de_DE.ISO-8859-1'

Datum='$(date +%d%m%Y)'
Wochentag='$(date +%A)'
Tag='$(date +%w)'
logdir=/var/log/backup
backdir=/mnt/zip/backup
wwwdir='/var/www/ /var/log'
#smbmount //Windows2kRechner/backup /backup -o
#username=Test,password=Test

lock
{
if [ $(id -u) -ne 0 ]
then
echo 'Error: permission denied (user is not root)'
exit 1
fi

if [ -e /var/lock/backup.lock ]
then
echo 'Error: process locked (backup is already running)'
exit 1
fi

trap 'test -e /var/lock/backup.lock && rm -f /var/lock/backup.lock; exit 0' 0 2 15
touch /var/lock/backup.lock
}

fullbackup()
{
tar cfz $backdir/fullbac.etc.$Wochentag.$Datum.tar.gz /etc >> /$logdir/backup.log
tar cfz $backdir/fullbac.home.$Wochentag.$Datum.tar.gz /home >> /var/log/backup/backup.log1
tar cfz $backdir/fullbac.www.$Wochentag.$Datum.tar.gz >> $logdir/backup.log $wwwdir
}

weekend()
{
find /etc -mtime -3 -type f > /etc/backup/backup.log
tar cfvzp -T /etc/backup/backup.log \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz >> $logdir/backup.log

find /home -mtime -3 -type f > /etc/backup/backup.log
tar cfvzp -T /etc/backup/backup.log \
$backdir/incremental.home.$Wochentag.$Datum.tar.gz >> $logdir/backup.log

find $wwwdir -mtime -3 -type f > /etc/backup/backup.log
tar cfvzp -T /etc/backup/backup.log \
$backdir/incremental.www.$Wochentag.$Datum.tar.gz >> $logdir/backup.log
}

incremental()
{
find /etc -mtime -1 -type f > /etc/backup/backup.log
tar cfvzp -T /etc/backup/backup.log \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz >> $logdir/backup.log
#2>&1 | tee /tmp/back.log

find /home -mtime -1 -type f > /etc/backup/backup.log
tar cfvzp -T /etc/backup/backup.log \
$backdir/incremental.home.$Wochentag.$Datum.tar.gz >> $logdir/backup.log

find $wwwdir -mtime -1 -type f > /etc/backup/backup.log
tar cfvz -T /etc/backup/backup.log \
$backdir/incremental.www.$Wochentag.$Datum.tar.gz >> $logdir/backup.log
}

main()
{
lock

if [ "$Wochentag" == 'Dienstag' ]
then
echo 'Fullbackup erzeugen'
fullbackup
elif [ "$Wochentag" == 'Montag' ]
then
echo 'Weekendbackup erzeugen'
weekend
else [ "$Wochentag" != 'Freitag' ]
echo 'Incremetales Backup erzeugen'
incremental
fi

#umount /backup

exit 0
}

main
</font><hr></pre></blockquote>

panthera

Re: backupscript hilfe

#5 Post by panthera »

und noch etwas schoener:

Code: Select all

#!/bin/sh

LANG='de_DE.ISO-8859-1'

DATUM='$(date +%d%m%Y)'
TAG='$(date +%w)'
WOCHENTAG='$(date +%A)'
DIRECTORY_BACKUP=/mnt/zip/backup
DIRECTORY_LOG=/var/log/backup
DIRECTORY_WWW=/var/www/

#smbmount //Windows2kRechner/backup /backup -o
#username=Test,password=Test

lock
{
        if [ $(id -u) -ne 0 ]
        then
                echo 'Error: permission denied (user is not root)'
                exit 1
        fi

        if [ -e /var/lock/backup.lock ]
        then
                echo 'Error: process locked (backup is already running)'
                exit 1
        fi

        trap 'test -e /var/lock/backup.lock && rm -f /var/lock/backup.lock; exit 0' 0 2 15
        touch /var/lock/backup.lock
}

backup_full()
{
        tar cfz $DIRECTORY_BACKUP/fullbackup.$2.$WOCHENTAG.$DATUM.tar.gz $1 >> $DIRECTORY_LOG/backup.$2.log
}

backup_weekend()
{
        find $1 -mtime -3 -type f > /tmp/backup.log
        tar cfvzp -T /tmp/backup.log \
                $DIRECTORY_BACKUP/incremential.$2.$WOCHENTAG.$DATUM.tar.gz >> $DIRECTORY_LOG/backup.$2.log
        rm -f /tmp/backup.log
}

backup_incremental()
{
        find $1 -mtime -1 -type f > /tmp/backup.log
        tar cfvzp -T /tmp/backup.log \
                $DIRECTORY_BACKUP/incremental.$2.$WOCHENTAG.$DATUM.tar.gz >> $DIRECTORY_LOG/backup.$2.log
        rm -f /tmp/backup.log
}

main()
{
        lock

        if [ "$WOCHENTAG" == 'Montag' ]
        then
                echo 'Weekendbackup erzeugen'
                BACKUP=weekend
        elif [ "$WOCHENTAG" == 'Dienstag' ]
        then
                echo 'Fullbackup erzeugen'
                BACKUP=full
        else [ "$WOCHENTAG" != 'Freitag' ]
                echo 'Incremetales Backup erzeugen'
                BACKUP=incremental
        fi

        backup_$BACKUP /etc etc
        backup_$BACKUP /home home
        backup_$BACKUP /var/www
        backup_$BACKUP /var/log www-log

        #umount /backup

        exit 0
}

main

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: backupscript hilfe

#6 Post by max »

@Panthera
schönes Skript!
Allerdings sollte man jetzt noch die Fehler mitloggen, abfragen ob Medium gemountet und evt. die Rückgabewerte der Subroutinen abfangen;<!--no-->-)

Ich meine etwas von 7 oder 15 im Hinterkopf zu haben.
< ;0< = Standardeingabe
> ;1> = Standardausgabe
2> = Standardfehlerausgabe

Du solltest die nur Pipes "|" und "tee" - um T-Stücke in Pipes einzubauen - angucken.

Wie man weitere öffnet weiss ich jetzt nicht mehr genau, (exec?)
Finde im Moment auch die Quelle nicht mehr. Was aber auch daran liegt das man es wirklich fast nie braucht.
Die Doku zur bash gibt dir bestimmt noch _viele_ Infos...

panthera

Re: backupscript hilfe

#7 Post by panthera »

aller guten dinge sind drei:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/sh

LANG='de_DE.ISO-8859-1'

DATUM='$(date +%d%m%Y)'
TAG='$(date +%w)'
WOCHENTAG='$(date +%A)'
UHRZEIT='$(date +%H%M)'

DIRECTORY_BACKUP=/backup
DIRECTORY_LOG=/var/log/backup
DIRECTORY_WWW=/var/www/

lock
{
if [ $(id -u) -ne 0 ]
then
echo 'Error: permission denied (user is not root)'
exit 1
fi

if [ -e /var/lock/backup.lock ]
then
echo 'Error: process locked (backup is already running)'
exit 1
fi

trap 'test -e /var/lock/backup.lock && rm -f /var/lock/backup.lock; exit 0' 0 2 15
touch /var/lock/backup.lock
}

backup_full()
{
echo 'Fullbackup erzeugen'
echo "Backup: $DATUM $UHRZEIT" >> $DIRECTORY_LOG/backup.$2.log 2>&1

tar cfz $DIRECTORY_BACKUP/fullbackup.$2.$WOCHENTAG.$DATUM.tar.gz $1 >> $DIRECTORY_LOG/backup.$2.log 2>&1
}

backup_weekend()
{
echo 'Weekendbackup erzeugen'
echo "Backup: $DATUM $UHRZEIT" >> $DIRECTORY_LOG/backup.$2.log 2>&1

find $1 -mtime -3 -type f > /var/cache/backup.log
tar cfvzp -T /var/cache/backup.log \
$DIRECTORY_BACKUP/incremental.$2.$WOCHENTAG.$DATUM.tar.gz >> $DIRECTORY_LOG/backup.$2.log 2>&1
}

backup_incremental()
{
echo 'Incremetales Backup erzeugen'
echo "Backup: $DATUM $UHRZEIT" >> $DIRECTORY_LOG/backup.$2.log 2>&1

find $1 -mtime -1 -type f > /var/cache/backup.log
tar cfvzp -T /var/cache/backup.log \
$DIRECTORY_BACKUP/incremental.$2.$WOCHENTAG.$DATUM.tar.gz >> $DIRECTORY_LOG/backup.$2.log 2>&1
}

backup()
{
if [ "$WOCHENTAG" == 'Montag' ]
then
BACKUP=weekend
elif [ "$WOCHENTAG" == 'Dienstag' ]
then
BACKUP=full
else [ "$WOCHENTAG" != 'Freitag' ]
BACKUP=incremental
fi

backup_$BACKUP /etc etc
backup_$BACKUP /home home
backup_$BACKUP /var/www www
backup_$BACKUP /var/log www-log
}


main()
{
lock

case $1 in
zip)
mount /dev/sda4 /backup &&
backup
;;

samba)
smbmount //Windows2kRechner /backup /backup -o username=Text,password=Test &&
backup
;;
*)
echo "Usage: $0 {zip,samba}"
exit 1
esac
exit 0
}

main $1
</font><hr></pre></blockquote>

panthera

Re: backupscript hilfe

#8 Post by panthera »

*grr,
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
main()
{
lock

case $1 in
zip)
mount /dev/sda4 $DIRECTORY_BACKUP &&
backup
;;

samba)
smbmount //Windows2kRechner/backup $DIRECTORY_BACKUP -o username=Text,password=Test &&
backup
;;
*)
echo "Usage: $0 {zip,samba}"
exit 1
esac
exit 0
}
</font><hr></pre></blockquote>

arno

Re: backupscript hilfe

#9 Post by arno »

@panthera
@max
moment mal nicht so schnell da komm ich nicht mehr mit *gg*
aber danke was da grad aus meinem script wird.
wahnsinn was ich da grad alles lern.

mfg arno

arno

Re: backupscript hilfe

#10 Post by arno »

@panthera
mein originalscript ist eh schöner geschrieben.
hab da eine frage zum ziplaufwerk.
ich backup auch auf ein zip.
die zipmodule lade ich mit dem befehl
modprobe imm
wenn ich aber jetzt quotas drauf machen will muss ich die module fix in den kernelkompilieren damit
ich das zip in die fstab eintragen kann?
oder kann ich gleich im lilo sagen das er sie laden soll??

@max
>>Die Doku zur bash gibt dir bestimmt noch _viele_ Infos
<img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle"> ja viel zu viele infos *gg*

danke

mfg arno

arno

Re: backupscript hilfe

#11 Post by arno »

hi
komisch bei mir kommt wenn ich das script aufrufe die fehlermeldung:
./backup: lock: command not found
kann doch eigentlich nicht sein oder??

#!/bin/sh


export LANG=de_DE.ISO-8859-1


Datum=$(date +%d%m%Y);
Wochentag=$(date +%A);
Tag=$(date +%w);
Uhr=$(date +%T);
logdir=/var/log/backup
backdir=/mnt/zip/backup
wwwdir="/var/www/ /var/log"
#smbmount //Windows2kRechner/backup /backup -o
#username=Test,password=Test
#echo "#########################################" >>$logdir/backup.log
#echo "######### Backup von TEST-Server ########" >>$logdir/backup.log
#echo "###############" $Wochentag $Uhr "#######" >>$logdir/backup.log
#echo "#################" $Datum "##############" >>$logdir/backup.log
#echo "#########################################" >>$logdir/backup.log

lock
{
if [ $(id -u) -ne 0 ]
then
echo 'Error: permission denied (user is not root)'
exit 1
fi

if [ -e /var/lock/backup.lock ]
then
echo 'Error: process locked (backup is already running)'
exit 1
fi

trap 'test -e /var/lock/backup.lock && rm -f /var/lock/backup.lock; exit 0' 0 2 15
touch /var/lock/backup.lock
}
fullbackup()
{
tar -czf $backdir/fullbac.etc.$Wochentag.$Datum.tar.gz /etc >>$logdir/backup.log
tar -czf $backdir/fullbac.home.$Wochentag.$Datum.tar.gz /home >>$logdir/backup.log
tar -czf $backdir/fullbac.www.$Wochentag.$Datum.tar.gz>>$logdir/backup.log $wwwdir

}



weekend()


{


find /etc -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz>>$logdir/backup.log



find /home -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.home.$Wochentag.$Datum.tar.gz >>$logdir/backup.log

find $wwwdir -mtime -3 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.www.$Wochentag.$Datum.tar.gz >>$logdir/backup.log


}




incremental()


{
find /etc -mtime -1 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.etc.$Wochentag.$Datum.tar.gz >>$logdir/backup.log 2>&1
#2>&1 | tee /tmp/back.log



find /home -mtime -1 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.home.$Wochentag.$Datum.tar.gz >>$logdir/backup.log 2>&1


find $wwwdir -mtime -1 -type f > /etc/backup/backup.log
tar -c -T /etc/backup/backup.log -v -z -p -f \
$backdir/incremental.www.$Wochentag.$Datum.tar.gz >>$logdir/backup.log 2>&1
}


main()
{
lock
if [ "$Wochentag" == "Dienstag" ]


then echo Fullbackup erzeugen;
fullbackup


elif [ "$Wochentag" == "Sonntag" ]


then echo Weekendbackup erzeugen;
weekend


else [ "$Wochentag" != "Freitag" ]


echo Incremetales Backup erzeugen;
fi



#umount /backup


exit 0
}
main


nochmals vielen
dank

arno

panthera

Re: backupscript hilfe

#12 Post by panthera »

arno: s/tar -c -v -z -p -f/tar cfvzp/g

wenn du kmod (CONFIG_KMOD=y) verwendest, werdend die module automagisch geladen (falls du sie unbedingt beim systemstart laden willst, modconf oder vi /etc/modules.conf).
quota haengt nicht davon ab, ob ein device- oder fs-treiber modul oder einkompiliert ist und
die fstab ist nur eine erleichterung, damit nicht alle optionen fuer haeufig verwende devices immer wieder eingegeben werden muessen.

panthera

Re: backupscript hilfe

#13 Post by panthera »

typo: s/lock/lock()/

nimm das hier anstatt deinem,
wenn du was pastest, nimm (code)(/code) (runde durch ekige klammern ersetzen), sonst kann man das fast nicht lesen.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/sh

LANG='de_DE.ISO-8859-1'

DATUM='$(date +%d%m%Y)'
TAG='$(date +%w)'
WOCHENTAG='$(date +%A)'
UHRZEIT='$(date +%H%M)'

DIRECTORY_BACKUP=/backup
DIRECTORY_LOG=/var/log/backup
DIRECTORY_WWW=/var/www/

lock()
{
if [ $(id -u) -ne 0 ]
then
echo 'Error: permission denied (user is not root)'
exit 1
fi

if [ -e /var/lock/backup.lock ]
then
echo 'Error: process locked (backup is already running)'
exit 1
fi

trap 'test -e /var/lock/backup.lock && rm -f /var/lock/backup.lock; exit 0' 0 2 15
touch /var/lock/backup.lock
}

backup_full()
{
echo 'Fullbackup erzeugen'
echo "Backup: $DATUM $UHRZEIT" >> $DIRECTORY_LOG/backup.$2.log 2>&1

tar cfz $DIRECTORY_BACKUP/fullbackup.$2.$WOCHENTAG.$DATUM.tar.gz $1 >> $DIRECTORY_LOG/backup.$2.log 2>&1
}

backup_weekend()
{
echo 'Weekendbackup erzeugen'
echo "Backup: $DATUM $UHRZEIT" >> $DIRECTORY_LOG/backup.$2.log 2>&1

find $1 -mtime -3 -type f > /var/cache/backup.log
tar cfvzp -T /var/cache/backup.log \
$DIRECTORY_BACKUP/incremental.$2.$WOCHENTAG.$DATUM.tar.gz >> $DIRECTORY_LOG/backup.$2.log 2>&1
}

backup_incremental()
{
echo 'Incremetales Backup erzeugen'
echo "Backup: $DATUM $UHRZEIT" >> $DIRECTORY_LOG/backup.$2.log 2>&1

find $1 -mtime -1 -type f > /var/cache/backup.log
tar cfvzp -T /var/cache/backup.log \
$DIRECTORY_BACKUP/incremental.$2.$WOCHENTAG.$DATUM.tar.gz >> $DIRECTORY_LOG/backup.$2.log 2>&1
}

backup()
{
if [ "$WOCHENTAG" == 'Montag' ]
then
BACKUP=weekend
elif [ "$WOCHENTAG" == 'Dienstag' ]
then
BACKUP=full
else [ "$WOCHENTAG" != 'Freitag' ]
BACKUP=incremental
fi

backup_$BACKUP /etc etc
backup_$BACKUP /var/www www
}


main()
{
lock

case $1 in
zip)
mount /dev/sda4 $DIRECTORY_BACKUP &&
backup
;;

samba)
smbmount //Windows2kRechner/backup $DIRECTORY_BACKUP -o username=Text,password=Test &&
backup
;;
*)
echo "Usage: $0 {zip,samba}"
exit 1
esac
exit 0
}

main $1
</font><hr></pre></blockquote>

panthera

Re: backupscript hilfe

#14 Post by panthera »

*grr, vielleicht sollte man auf irc ausweichen :)
irc.freenode.net #debian.de (bis 14:00, ansonsten morgen wieder)

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
backup()
{
if [ "$WOCHENTAG" == 'Montag' ]
then
BACKUP=weekend
elif [ "$WOCHENTAG" == 'Dienstag' ]
then
BACKUP=full
else [ "$WOCHENTAG" != 'Freitag' ]
BACKUP=incremental
fi

backup_$BACKUP /etc etc
backup_$BACKUP /home home
backup_$BACKUP /var/www www
backup_$BACKUP /var/log www-log
}
</font><hr></pre></blockquote>

panthera

Re: backupscript hilfe

#15 Post by panthera »

so, das letzte. im gegensatz zu den anderen funktioniert dieses einwandfrei (das 'removing /' von tar kannst du ignorieren).

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/sh

LANG=de_DE

DATUM=`date -I`
WOCHENTAG=`date +%A`
ZEIT=`date +%c`

DIRECTORY_BACKUP=/backup
DIRECTORY_LOG=/var/log/backup

if [ ! -d $DIRECTORY_BACKUP ]
then
mkdir -p $DIRECTORY_BACKUP
fi

if [ ! -d $DIRECTORY_LOG ]
then
mkdir -p $DIRECTORY_LOG
fi

lock()
{
if [ $(id -u) -ne 0 ]
then
echo 'Error: permission denied (user is not root)'
exit 1
fi

if [ -e /var/lock/backup.lock ]
then
echo 'Error: process locked (backup is already running)'
exit 1
fi

trap 'test -e /var/lock/backup.lock && rm -f /var/lock/backup.lock; exit 0' 0 2 15
touch /var/lock/backup.lock
}

backup()
{
if [ "$WOCHENTAG" == 'Montag' ]
then
BACKUP=weekend
elif [ "$WOCHENTAG" == 'Dienstag' ]
then
BACKUP=full
else [ "$WOCHENTAG" != 'Freitag' ]
BACKUP=incremental
fi

backup_$BACKUP /etc etc
backup_$BACKUP /home home
backup_$BACKUP /var/www www
backup_$BACKUP /var/log www-log
}

backup_full()
{
echo 'Fullbackup erzeugen'
echo "Full Backup: $ZEIT" >> $DIRECTORY_LOG/backup.$2.log

tar cfvzp $DIRECTORY_BACKUP/fullbackup-$2.$DATUM-$WOCHENTAG.tar.gz $1 >> $DIRECTORY_LOG/backup.$2.log >&1
}

backup_weekend()
{
echo 'Weekendbackup erzeugen'
echo "Incrementelles (Weekend) Backup: $ZEIT" >> $DIRECTORY_LOG/backup.$2.log

find $1 -mtime -3 -type f > /var/cache/backup.log
tar cfvzp $DIRECTORY_BACKUP/incremental-$2.$DATUM-$WOCHENTAG.tar.gz -T /var/cache/backup.log >> $DIRECTORY_LOG/backup.$2.log >&1
rm -f /var/log/backup.log
}

backup_incremental()
{
echo 'Incrementelles Backup erzeugen'
echo "Incrementelles Backup: $ZEIT" >> $DIRECTORY_LOG/backup.$2.log

find $1 -mtime -1 -type f > /var/cache/backup.log
tar cfvzp $DIRECTORY_BACKUP/incremental-$2-$DATUM-$WOCHENTAG.tar.gz -T /var/cache/backup.log >> $DIRECTORY_LOG/backup.$2.log >&1
rm -f /var/log/backup.log
}

main()
{
lock

case $1 in
zip)
mount /dev/sda4 $DIRECTORY_BACKUP &&
backup
;;

samba)
smbmount //Windows2kRechner/backup $DIRECTORY_BACKUP -o username=Text,password=Test &&
backup
;;
*)
echo "Usage: $0 {zip,samba}"
exit 1
esac

umount $DIRECTORY_BACKUP

exit 0
}

main $1
</font><hr></pre></blockquote>

Post Reply