PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein BACKUP Skript + Fragen



markwaldhoff
13.12.05, 19:57
Hi !

Ich habe jetzt endlich geschafft ein BACKUP Skript zu schreiben, was meine Wünsche erfüllt... also fast... :rolleyes:
Das Skript legt beim ersten durchlauf eine Backup der Verzeichnisse Documents und evolution an. Bei den nächsten Durchläufen (läuft jeden Tag einmal über cron) werden nur die Änderungen in diesen Verzeichnisse als Backup angelegt... ich habe jetzt allerdings das Problem dass das Skript jeden Tag eine Backup Datei anlegt, auch wenn keine Änderungen passiert sind. Diese Dateien die eigentlich keinen Inhalt haben, sind immer 105,8 KB groß. Kann ich mein Skript irgendwie so anpassen das es kontrolliert ob die erstellte Datei kleiner als 106KB ist und diese dann löscht wenn das zutrifft ? Ich weiß nicht so richtig wie ich das realisieren bzw. abfragen soll...

Hier mein Skript:


#!/bin/bash

# Mit diesem Script werden die Verzeichnisse, die unter "DATEN" angegeben
# sind nach "ZIEL" gesichert und anschließend eine Mail über den Verlauf
# des Backups gesendet.

# belegt Variable DATUM mit dem akt. Datum
DATUM=`date +%A,%d.%m.%y`

# belegt Variable DATEN mit den Daten die gesichert werden sollen
DATEN="/home/waldhoff/Documents /home/waldhoff/evolution"

# belegt Variable ZIEL mit dem Zielverzeichniss der Backups
ZIEL="/home/waldhoff/backups"

# belegt Variable USER mit dem User, der die Statusmeldung erhalten soll
USER=waldhoff

# belegt Variable LOGFILE mit der Log, die tar schreiben soll
LOGFILE="/home/waldhoff/backup_log_$DATUM.log"

# belegt Variable EXITCODE mit dem Exit-code von tar
EXITCODE=$?

# danach entfernen wir das Logfile vom Vortag
rm /home/waldhoff/backup_log_*

# nun starten wir den Backup-Prozess
tar -cPzf $ZIEL/$DATUM.tar.gz -g $ZIEL/zeitstempel $DATEN > $LOGFILE

#festplatte mounten
mount /mnt/handy1
if [ $?=0 ]; then
echo "Verzeichnis /mnt/handy1 erfolgreich gemountet" > $LOGFILE
mv /home/waldhoff/backups/*.tar.gz /mnt/handy1/backup/
echo "Backups erfolgreich verschoben" > $LOGFILE
umount -l /mnt/handy1
echo "Verzeichnis /mnt/handy1 wurde erfolgreich entmountet" > $LOGFILE
else
echo "Verzeichnis /mnt/handy1 konnte nicht gemountet werden, Daten bleiben unter /home/waldhoff/backups und werden das nächste mal verschoben" > $LOGFILE
fi

Der Gestreifte
13.12.05, 21:17
Vorweg:
Alle ">"-Umleitungen nach der ersten überschreiben Dein Logfile. ">>" würde anhängen.

ls -lk datei | cut -d\ -f6liefert Dir die Größe der Datei, auf die Du dann ein
if [ $DATEI -le 106 ]; then
nichts tun
else
mv *.tgz $ZIEL
fi anwenden könntest.

Nachdem es sich hier scheinbar nicht um riesige Datenbestände hadelt die (in meinen Augen sinnvollere) Alternative: nimm statt der tar-Optionen "c" und "g" die Option "u" (setzt natrülich voraus, dass das Archiv (oder zumindest eine Datei gleichen Namens) existiert, ergo handy1 gemountet ist.
Ist in meinen Augen sinnvoller, weil nur ein Tool alle Aufgaben erledigt.
Zusätzlich hättest Du den Vorteil, dass nichs gemacht wird, wenn handy1 nicht gemountet ist (ein Backup in dem Verzeichnis, in dem die zu backupenden (aua) Daten sind, macht schließlich nur wenig Sinn).

markwaldhoff
14.12.05, 18:22
Vielen Dank !
Das mit dem überprüfen der Datei-Größe funktioniert. Nur leider kommt es mir so vor, als ob dieses inkrementellen Backups nicht so richtig funktionieren... er erkennt die Unterschiede nicht, wenn sich etwas verändert hat... ich habe z.B. im Ordner Documents etwas entfernt und hinzugefügt.... er erstellt aber kein inkrementelles Backup davon, erkennt also keine Unterschiede.

Ich wollte es jetzt mit -u (update) versuchen. Wie funktioniert das genau ? Muss ich zuerst ein Archiv mit -zcf erzeugen und dann kann ich es anschließend immer mit -u updaten ???
Bei mir geht das noch nicht so ganz:



[root@ZUHAUSE backups]# tar -cPzf archiv.tar.gz /home/waldhoff/evolution/
[root@ZUHAUSE backups]# tar -uPzf archiv.tar.gz /home/waldhoff/evolution/
tar: Kann komprimierte Archive nicht aktualisieren
tar: Nicht behebbarer Fehler: Programmabbruch.

Der Gestreifte
14.12.05, 19:54
tar: Kann komprimierte Archive nicht aktualisierenah, sorry.
Hab' Dein Posting schludrig gelesen, "-u" geht nur bei unkomprimierten Archiven.


ich habe z.B. im Ordner Documents etwas entfernt und hinzugefügt.... er erstellt aber kein inkrementelles Backup davon, erkennt also keine Unterschiede.Bist Du wie folgt (einfachste Variante, AFAIK) vorgegangen?
maddin@captin:test1$ ls
a.out a2ps.info.html a2ps.texi eintest v1 v2
maddin@captin:test1$ tar -czf ../archiv.tgz -g ../liste1 *
maddin@captin:test1$ rm eintest
maddin@captin:test1$ touch zweitest
maddin@captin:test1$ tar -czf ../archiv2.tgz -g ../liste2 *
maddin@captin:test1$ rm * -rf
maddin@captin:test1$ ls
maddin@captin:test1$ tar -xzf ../archiv.tgz
maddin@captin:test1$ ls
a.out a2ps.info.html a2ps.texi eintest v1 v2
maddin@captin:test1$ tar -xzf ../archiv2.tgz
maddin@captin:test1$ ls
a.out a2ps.info.html a2ps.texi eintest v1 v2 zweitest