• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

dar in cron einbauen

linOS

Member
hallo

ich möchte dar einmal in der woche laufen lassen. ich versuche jetzt vergeblich das in cron einzugeben, eigendlich über kcron. um dar richtig ausführen zu lassen, muss ich ja in des verzeichnis das gebackuped werden soll. nur macht cron das nicht. mein befehl sieht derzeit so aus:

cd /home/name/Mail/ dar -d /mnt/backup/KDar/Dir-Mail

aber kein erfolg. es pasiert rein gar nichts. ich hänge da jetzt vollständig weil ich nicht weis ob und wie ich das verzeichnis wechseln kann bevor dar ausgeführt wird.

kann mir da jemand weiterhelfen? wie macht ihr backups zeitgestuert??
 

oc2pus

Ultimate Guru
schreibe dir ein kleines script mit allen deinen Befehlen, nenne es myBackup, mach es ausführbar, teste es ;)

evtl Parametrisierst du dieses script noch und rufst es dann mit Parameter aus dem cron heraus auf: Beispiel myBackup Montag oder myBackup full ...

dann fügst du im cron den Aufruf dieses einen Scriptes ein und du bist fertig ;)

[/code]
 
OP
L

linOS

Member
da bin ich aber schon wieder. also das mit dem script funktioniert wunderbar, obwohl es meine ersten scripte sind ;) auch der aufruf klappt so weit ich das an meinen mails sehen kann.

aber ...
ich mache ein

dar -d /blabla/basename

als meldung bekomme ich nur die dateien angezeigt, die verändert sind. eine sicherung erfolgt aber nicht. das heißt, das dar-file ist danach immernoch die alte und es kommt auch keine hinzu. eigendlich müssen nur noch die dateien die angezeigt werden gespeichert werden... blos wie?
 

oc2pus

Ultimate Guru
hier ein Beispiel (mein Backup-Script)
Es wird aufgerufen mit myBackup INC bzw myBackup FULL.
Via cron wird jeden Tag myBackup INC aufgerufen und Freitags myBackup FULL.

Dieses script soll dir nur eine Idee vermitteln wie so etwas funktioniert ;)
Wenn du es benutzen willst musst du z.Bsp die Verzeichnisse anpassen und deinen Sicherungsumfang einstellen.

wenn du den Befehl set -x aktivierst siehst du genauer was in dem Script passiert.

Code:
#! /bin/bash 
#
# Author: oc2pus
# Changelog: 29.03.2004 - initial release
#
# Todo: read --prune and directorylist from external config file /etc/myBackup.conf

#set -x
umask 022

# get mode from commandline
MODE=INC
if [ "$1" = "FULL" ]; then
	MODE=FULL
fi

# the name of this stuff
PROGNAME=`basename $0`

# directory for backups
DAR_VERZ=/local/backup

# single logfile for logging the backup
LOG=$DAR_VERZ/dar.log

# name of dar manager database
DAR_DMD=$DAR_VERZ/backupLeomalet.dmd

# name of each backup
DAR_BASE="$DAR_VERZ/backupLeomalet_"`date -I`

# dar command extension for incremantal backup
DAR_INC=""

# name of last archive
DAR_PREV=""

###############################################################################
# First the ls command creates a list of the files with .dar extension in the backup directory.
# By default ls displays files alphabetically.
# tail is used to get the last file with the -n 1 switch, which says to display only the last line.
# DAR wants to operate on filenames without slice number and extension.
# This means that if we don't get rid of the tail, DAR will stop the operation and ask an
# interactive question to the user, defeating the purpose of automation.
# We separate the complete filename with awk. The awk command separates the string at the dots,
# and prints the first column. The result is the base name we want to pass DAR
###############################################################################
function searchLastArch ()
{
	DAR_NEWARCH=$1
	DAR_NEWARCHNAME="$DAR_NEWARCH".1.dar

	if [ -f $DAR_NEWARCHNAME ]; then
		clearArch
	fi
	setPrevName
}

###############################################################################
#
###############################################################################
function clearArch ()
{
	rm -r $DAR_NEWARCHNAME

        # remove dmd-entry
	SUCHE_DAR=`basename $DAR_NEWARCH`
        DAR_NR=`/usr/bin/dar_manager -B $DAR_DMD -l | grep $SUCHE_DAR | /usr/bin/awk -F ' ' '{print $1;}'`
        if [ ! -z $DAR_NR ]; then
        	echo "$PROGNAME: remove entry $DAR_NR from $DAR_DMD" >> $LOG
                /usr/bin/dar_manager -B $DAR_DMD -D $DAR_NR          >> $LOG 2>&1
        fi
}

###############################################################################
#
###############################################################################
function setPrevName ()
{
	DAR_PREV=`/bin/ls $DAR_VERZ/*.dar | /usr/bin/tail -n 1 | /usr/bin/awk -F '.' '{print $1;}'`
}

###############################################################################
# create list of actual installed packages
###############################################################################
function createRPMList ()
{
	echo "$PROGNAME: creating list of installed RPMs..." >> $LOG
	/bin/rpm -qa | /usr/bin/sort > $DAR_VERZ/myActRPM-9.0
}

###############################################################################
# create dar manager database if necessary
###############################################################################
function createDARDatabase ()
{
	if [ ! -f $DAR_DMD  ]; then
        	echo "$PROGNAME: creating new $DAR_DMD ..." >> $LOG 2>&1
        	/usr/bin/dar_manager -C $DAR_DMD            >> $LOG 2>&1
	fi
}

###############################################################################
# main
###############################################################################
echo "$PROGNAME: `date`"                    > $LOG 
echo "$PROGNAME: starting $MODE backup..." >> $LOG

createRPMList

if [ "$MODE" = "FULL" ]; then
	DAR_ARCH=$DAR_BASE
	echo "$PROGNAME: creating backup $DAR_ARCH" >> $LOG

	# force rebuild of dar_manager database
	echo "$PROGNAME: removing $DAR_DMD" >> $LOG
	rm -f $DAR_DMD
else
	DAR_ARCH="$DAR_BASE"_diff

	searchLastArch $DAR_ARCH

	DAR_INC="-A $DAR_PREV"
	echo "$PROGNAME: incremental backup $DAR_ARCH is based on $DAR_PREV" >> $LOG
fi

# start backup
/usr/bin/dar \
	--no-warn \
	--create $DAR_ARCH \
	-s 675M \
	-y \
	-v \
	-Z "*.mp3"   -Z "*.avi" -Z "*.mpg"  -Z "*.mpeg" \
	-Z "*.divx"  -Z "*.rm"  -Z "*.wmv"  -Z "*.wma" \
	-Z "*.asf"   -Z "*.ra" \
	-Z "*.gif"   -Z "*.jpg" -Z "*.jpeg" -Z "*.png" \
	-Z "*.zip"   -Z "*.tgz" -Z "*.gzip" -Z "*.bzip" \
	-Z "*.bzip2" -Z "*.rar" -Z "*.Z" \
	--fs-root / \
	etc \
	--prune etc/X11/xserver/C/print/models \
	var/lib \
	--prune var/lib/rpm \
	var/adm \
	--prune var/adm/backup \
	--prune var/lib/nfs \
	usr/local \
	root \
	--prune root/.mozilla/root/egrkbfkn.slt \
	--prune root/.phoenix \
	--prune root/.kde/share/cache \
	home \
	--prune home/oc2pus/tmp \
	--prune home/oc2pus/Multimedia \
	--prune home/oc2pus/.thumbnails \
	--prune home/oc2pus/.mozilla/default/r4qcjbgo.slt/Cache \
	--prune home/oc2pus/.firefox/default/dbrvfhgg.slt/Cache \
	--prune home/oc2pus/.firefox/default/dbrvfhgg.slt/Cache.Trash \
	--prune home/oc2pus/.kde/share/cache \
	--prune home/oc2pus/.kde/share/config/session \
	--prune home/oc2pus/.kde/share/apps/RecentDocuments \
	--prune home/oc2pus/orbit-oc2pus \
	boot/grub/menu.lst \
	$DAR_INC                                    >> $LOG 2>&1

# create dar manager database if necessary
createDARDatabase

echo "$PROGNAME: append backupdata to $DAR_DMD ..." >> $LOG 2>&1
/usr/bin/dar_manager -B $DAR_DMD -A $DAR_ARCH       >> $LOG 2>&1

echo "$PROGNAME: content of $DAR_DMD:"              >> $LOG
/usr/bin/dar_manager -B $DAR_DMD -l                 >> $LOG 2>&1

echo "$PROGNAME: `date`"                            >> $LOG 
echo "$PROGNAME: backup finished"                   >> $LOG

exit 0
 
OP
L

linOS

Member
uff. so umfangreich ist meines natürlich nicht. wie gesagt, mein erstes script. sieht so aus:

cd /verzeichnis/das/gebackupt/wird
dar -d /verzeichnis/mit/backups

das ganze heißt dann backup-diff_Verzeichnissname.sh

mehr nicht =) mein problem liegt jetzt darin das er gar kein differneziertes backup erstellt *grmpf. ich hab da was mit date gesehen. das sieht gut aus ;) dazu muss ich mich aber erst noch in das scriptingzeugs einarbeiten.
 
OP
L

linOS

Member
hmm .. das mit date war wohl nichts. gibt es die möglichkeit ein datum einzubauen? dann mache ich volle backups, das genügt mir auch erstmal ;)


mein problem ist wohl ein dar problem. beim starten der scripte will er eine ~/.darrc, die ist aber nicht da. kann es sein das dar deswegen auch keine differenzierte backups macht? kann mir jemand so eine datei posten, dann füge ich die selbst ein.
 
OP
L

linOS

Member
weil ich da nicht durchblicke ;-) ich hab werde mit scripten was gemacht, noch mit dar. ich weiß gar nicht wo ich anfangen soll. es hat mir aber schon sehr geholfen, weil ich deinen dar-befehl mit den optionen gerade ausschlachte =)

ich probier gerade mit dar herum, kdar ist ja einfach. klappt auch schon soweit. nur das problem mit den -d habe ich noch. aber wie gesagt, volle backups tuns auch erstmal, muss die nurnoch nummerieren. datum wäre klasse, habe ich aber nichts dazu gefunden. zur not mache ich ne schleife die die backups nummeriert und dem neusten die höchste gibt.
 
OP
L

linOS

Member
so, hab mit miniscripten die sache gelöst. mit datum wird jetzt ein mal pro woche ein volles backup gemacht. das reicht erstmal. ich brauche aber zwei dateien. noch. ich arbeite gerade an einem schript das aber nich will. ich komme noch nicht ganz mit den schleifen klar. steht aber bei programmieren drin, da ist es denke ich besser aufgehoben.
 
Oben