Hilfe bei Backupscript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
JeffDeluxe
Beiträge: 8
Registriert: 22.01.2006 17:09:47
Wohnort: Bad Schwalbach
Kontaktdaten:

Hilfe bei Backupscript

Beitrag von JeffDeluxe » 24.03.2006 15:04:29

Hi @ all!

Ich bin Linux noob und kenne mich auch noch nicht so besonders gut im scripten aus was sich aber im laufe der Zeit ändern soll :)

der folgende Scriptcode ist aus einem Backup Script an dem ich grade übe.
Dieser soll nun prüfen ob bereits ein Backupfile besteht das älter als 30 Tage ist.
Wenn ja wird alte umbenannt und das neue unter dem originalnamen gepeichert.
Leider funktioniert das ganze nicht so richtig aber probiere noch etwas rum.
Wenn jemand einen Tip hat dann gerne :)

Code: Alles auswählen

#BACKUP_NAME ist gleich der Name des Backupfiles
#BACKUP_DIR ist gleich dem Dir indem das Backupfile rein kommt
#BACKUP_PFAD ist gleich beides zusammen also der Pfad

VAR_ZEIT=`find $BACKUP_DIR -name $BACKUP_NAME -mtime +30`

if [ $VAR_ZEIT = $BACKUP_PFAD ] 
	then
		echo "Das Backup *.1 wird umbenannt in *.2"
		mv $BACKUP_PFAD.1 -> $BACKUP_PFAD.2
		echo "Das Backup ist älter als 30 Tage und wird umbenannt in *.1"
		mv $BACKUP_PFAD -> $BACKUP_PFAD.1
fi

Gruß JeffD :wink:

Benutzeravatar
MartinN
Beiträge: 112
Registriert: 20.03.2006 09:53:15

Beitrag von MartinN » 24.03.2006 15:41:36

Hi,
kann dir zwar leider auch nicht helfen, da ich selber ziemich neu bin.
Interessiere mich aber für dein Script.
Kannst du vielleicht das fertige Script hier rein posten oder mir per PN schicken, sobald es fertig ist? Wäre super.

Bye

JeffDeluxe
Beiträge: 8
Registriert: 22.01.2006 17:09:47
Wohnort: Bad Schwalbach
Kontaktdaten:

Beitrag von JeffDeluxe » 24.03.2006 15:54:48

Ja klar kein problem!

Ich denke ich mache fortschritte ;)
Wenns fertig ist stelle ich es hier ein!

Gruß JeffD

Methusalix

Hilfe bei Backupscript

Beitrag von Methusalix » 24.03.2006 17:21:43

Hallo,

vielleicht verstehe ich Dich nicht richtig, weil ich Deine backup-Strategie nicht kenne.
Ich würde beim backup das Datum in den Dateinamen integrieren und das Script dann,
bezogen auf Dein Beispiel, alle 30 Tage laufen lassen und Du hast per Dateinamen eine Datumsdifferenz, ohne das irgendwas umzukopieren ist.
Hier findest Du ein Beispiel mit DAR:

http://gradha.sdf-eu.org/textos/backup.en.html

In der Forumssuche gibt`s dazu sicher auch einiges.

Gruß
Matthias

Benutzeravatar
Mr_Snede
Beiträge: 2323
Registriert: 08.07.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ruhrpott

Beitrag von Mr_Snede » 24.03.2006 19:58:11

Bei deinem Skript kann ich dir jetzt nicht helfen, aber im aktuellen c't ist ein passender Artikel:
http://www.heise.de/ct/inhverz/search.s ... hen=suchen
Der ist gut erklärt und scheint deinen Bedarf abzudecken.

Neben der Boardsuche gibt es noch die Seite im Wiki: http://wiki.debianforum.de/BackupTipps
Software Finder - Software in Kategorien Debian ohne Ballast - Tipps für ein schlankes Debian

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Beitrag von rksteve » 25.03.2006 10:21:08

Eventuell reicht dir ja auch Flexbackup was du jeden Monat durch cron aufrufen lässt?

Gruss
Steve
Ich? Nein, ich bin keine Signatur, ich mach hier nur sauber...

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Hilfe bei Backupscript

Beitrag von roli » 27.03.2006 14:16:31

Tach,

so ganz geblickt was du will'st, bzw. was nicht funktioniert habe ich's noch nicht, aber hier mal das was mir so aufgefallen ist:
JeffDeluxe hat geschrieben:mv $BACKUP_PFAD.1 -> $BACKUP_PFAD.2
das "->" hat beim move nix zu suchen.

Verstehe ich dein Script richtig, das du die Backups "neben" den Orginalen ablegst? Ich persoenlich wurde dafuer einen anderes Verzeichnis waehlen, da du dann recht einfach einen Sicherungsstand mal auf CD brennen koenntest.
Uebrigens, du movest mit dem zweiten mv befehl dein Orginal nach $BACKUP_PFAD.1, damit ist's dann erstmal "weg", hier wuerde ich ein "cp" fuer sinnvoller halten.

Wenn du hilfe haben moechtest, musst du schon etwas konkreter werden, gerade an dem Punkt was nicht geht, bzw. wie's gehen soll :wink:
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

v.errath@bcom.at
Beiträge: 18
Registriert: 22.02.2006 12:10:05

Hi: Hier mein Vorschlag

Beitrag von v.errath@bcom.at » 28.03.2006 11:27:08

Hallöchen

Ich bastle auch gerade an einem Backup-Script. Zwar verwenden wir rdiff-backup für unser Bakcup, aber ich habe in mein Script eine kleine Funktion eingebaut, die alle Logfiles (in diesem Fall Apache-Logs) die älter als eine gewisse Zeit sind, löscht.

Hier der code der Funktion:

Code: Alles auswählen

#
# Funktion um alle Logs aus einem Archiv-Verzeihniss, die älter
# als eine gewisse Zeit sind zu löschen
# Übergabeparameter:
#    1: Ordner
#    2: Maximales Alter der Logs in Sekunden:
#       1 Tag: 86400; 1 Woche: 604800; 1 Monat: 2678400
#
delete_old_logs() {
    for item in `dir $1/*`
    do
        # `stat $item -c %Y`gibt die letzte Modifikationszeit der Datei zurück (in sec seit irgendwann 1970)
        # $((`date +%s`-$2)) Berechnet dieZeit (in sec seit irgendwann 1970) von "Heute minus Parameter 2"
        if [[ `stat $item -c %Y` -le  $((`date +%s`-$2)) ]];
        then
            nice rm $item
            # log ist eine weitere funktion zum loggen in mehrere Dateien
            log "Löschen: "$item "notime"
        fi
    done
}
Aufruf dieser Funktion:

Code: Alles auswählen

# Für jeders Home-Verzeichnis mache das folgende
for user_home in `find /home -type d -maxdepth 1`
do
    log "-----------------------------------------" "notime"
    log "Start: "$user_home

    # Komprimieren der Apache logs und löschen zu alter Logs
    # Wenn in einem Home-Verzeichniss das Verzeichniss "log" existiert" dann ...
    if [[ -d $user_home/log ]];
    then
        # Verschieben alter Logs: 1 Woche
        # Diese Funktion verchiebt alle Logs, die älter als 1 Woche sind in einen "Archiv-Ordner"
        apache_log_save $user_home/log $user_home/log/arch 604800
        #Löschen zu alter Logs: 1 Monat
        delete_old_logs $user_home/log/arch 2678400
    fi

    #sontiger Code für rdiff-backup usw.
done
Welcher Befehl macht nun was: Dokumentation direkt in den Scripten.

Ich hoffe das ganze ist nicht allzu kompliziert für dich. Ich habe aber auch einfach (ohne große vorkenntnisse) ausprobiert. Geholfen hat mir auch diese Seite: http://www.linuxfibel.de/bashprog.htm
sowie die man-Seite der bash.

Hellraiser
Beiträge: 26
Registriert: 13.10.2005 16:11:07

Beitrag von Hellraiser » 29.03.2006 15:16:06

Ich benutze für meine Backups das Datum im Filenamen. Diese werden dann einer gewissen Zeit über nen Cronjob gelöscht. Sieht folgendermaßen aus.

Backup erstellen:

Code: Alles auswählen

#!/bin/bash
days=1
find /<Ordner> -mtime -$days –print |tar cvzf /<Zielordner>/backup_`date ‘+%d
_%m_%y’`.tar.gz  -T –
Backup löschen:

Code: Alles auswählen

rm –R /<Zielordner>/backup_`date –date ‘1 month ago’ +%d_%m_%y`.tar.gz

JeffDeluxe
Beiträge: 8
Registriert: 22.01.2006 17:09:47
Wohnort: Bad Schwalbach
Kontaktdaten:

Beitrag von JeffDeluxe » 30.03.2006 17:06:16

Erstmal vielen Dank für die vielen Antworten! big THX :hail:

Ihr habt mir sehr weitergeholfen...

Ich werde dann demnächst das Ergebnis meiner Arbeit hier posten.

jetzt hab ich aber noch 1-2 kleine Fragen!

Code: Alles auswählen

echo $(ls -l <ordnername>)
...gibt mir keine liste aus sondern schreibt alle informationen hintereinander...
Gibts da einen trick damit die daten so angezeigt werden wie wenn ich den ls -l Befehl normal in die Konsole eingebe also gelistet untereinander!?

Code: Alles auswählen

 while :
do
...eine while schleife (while [Bedingung] do) was macht der doppelpunkt in dem fall zwischen while und do? Welche Bedingung ist der ":" ?

Schon Danke :wink:
Gruß Jeff

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 30.03.2006 17:11:55

JeffDeluxe hat geschrieben:

Code: Alles auswählen

echo $(ls -l <ordnername>)
...gibt mir keine liste aus sondern schreibt alle informationen hintereinander...
Gibts da einen trick damit die daten so angezeigt werden wie wenn ich den ls -l Befehl normal in die Konsole eingebe also gelistet untereinander!?
Wenn Du das einfach nur ausgeben willst, dann mache doch einfach nur ein "ls -l <ordnername>"!?

JeffDeluxe
Beiträge: 8
Registriert: 22.01.2006 17:09:47
Wohnort: Bad Schwalbach
Kontaktdaten:

Beitrag von JeffDeluxe » 30.03.2006 17:24:48

hmmm ja logisch!
wie doof von mir... hab zu umständlich gedacht :lol: !

Bin halt noch ein noob.

DANKE DIR!

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 30.03.2006 18:25:38

Hi Jeff,

auch wenn du's vielleicht nicht mehr brauchst, meine while Schleifen sehen wie folgt aus:

Code: Alles auswählen

while test was_ich_checken_will
do
  mach_irgendetwas
done
Uebrigens den Befehl "test" kann man auch durch Eckige Klammern ersetzen, also "[]", aber dabei musst du darauf achten, das zwichen der Klammer und dem "Inhalt" mindestens ein Leerzeichen steht.
Mit dem Doppelpunkt von dir kann ich so nichts anfangen.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

JeffDeluxe
Beiträge: 8
Registriert: 22.01.2006 17:09:47
Wohnort: Bad Schwalbach
Kontaktdaten:

Beitrag von JeffDeluxe » 30.03.2006 19:18:10

Danke roli für Deine Antwort.

wie ne while schleife funktioniert das weiß ich :wink: ... mein problem ist jetzt nur was der doppelpunkt zu bedeuten hat?

Code: Alles auswählen

while :
do
doppelpunkt = Bedingung ? wenn ja welche?

Gruß Jeff

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 30.03.2006 19:57:07

Hi,

wie schon gesagt, mit sagt der so erstmal nichts, wo "hast'e" den denn her? Ohne Zusammenhang faellt mir selbst das raten schwer.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 31.03.2006 07:51:33

Mir fehlt auch der Zusammenhang, aber ich hab's einach mal eingetippert:

Code: Alles auswählen

while : ; do echo Endlosschleife; done
Ergibt wirklich eine Endlosschleife, genau wie dies ein "while true; do ...; done" ergäbe. Mag sein, daß beim bash-while der : eine Abkürzung für "immer wahr" ist, lege meine Hand dafür aber nicht ins Feuer.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 31.03.2006 09:42:45

Einen wunderschen Freitag Morgen alle zusammen,

seep, du hast recht, ch habe's gefunden:

Code: Alles auswählen

:

    null command [colon]. This is the shell equivalent of a "NOP" (no op, a do-nothing operation). It may be considered a synonym for the shell builtin true. The ":" command is itself a Bash builtin, and its exit status is "true" (0).
Nachzulesen unter Advanced Bash-Scripting Guide: Special Characters

So im nachhinein, ich hab's oefters schon mal in irgendwelchen if Konstrukten gesehen, wenn's zu umstaendlich waere das Teststatement zu negieren, dann war im if-Zweil nur ein : und die eigentlich Verarbeitung findet im else-Zweig statt.

Schoenes Wochenende
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

JeffDeluxe
Beiträge: 8
Registriert: 22.01.2006 17:09:47
Wohnort: Bad Schwalbach
Kontaktdaten:

Beitrag von JeffDeluxe » 02.04.2006 13:50:15

hi

Ich hab mir sowas schon fast gedacht.
Aber jetzt hab ich´s ja auch noch schwaz auf weiß! :)

Danke 8)

Antworten