Anzeige:
Ergebnis 1 bis 12 von 12

Thema: [Frage] Shell Script+Backup+FTP Übertragung

  1. #1
    Registrierter Benutzer
    Registriert seit
    May 2003
    Beiträge
    45

    [Frage] Shell Script+Backup+FTP Übertragung

    Hallo zusammen,
    vielleicht könnt ihr mir helfen.
    Ich habe ein kleines Backupscript für die Bash geschrieben.
    Allerdings funktioniert es noch nicht ganz so, wie ich es mir vorstelle.
    Google hab ich bemüht und auch die Suche, aber meine Vorstellung scheint nicht ganz trivial zu sein.

    Hier erstmal mein Script, soweit ich es geschrieben habe:
    Code:
    #!/bin/bash
    echo "Starte Backup"
    echo "backupe PROJEKT"
    echo "lege DB-Backup an"
    mysqldump -uUSER -pPASSWORT DATENBANK > backup.sql
    echo "DB-Backup fertig"
    echo "lege File-Backup an"
    echo "wechsel ins Verzeichnis"
    cd /PFAD/ZUM/PROJEKT
    tar cfz Projekt.tar.gz httpdocs
    mv Projekt.tar.gz /home
    cd /home
    DATUM=`date +%F_%H_%M`
    FILENAME=WUNSCHNAME_$DATUM.tar.gz
    tar cfz $FILENAME Projekt.tar.gz backup.sql
    bzip2 $FILENAME
    rm WUNSCHNAME_$DATUM.tar.gz
    echo "File-Backup fertig"
    echo "entferne Temp"
    rm Projekt.tar.gz
    rm backup.sql
    echo "baue FTP-Verbindung auf"
    ftp -n SERVER.SERVER.com <ftp.input
    put $FILENAME
    bye
    rm $FILENAME
    
    exit 0
    Die Echos habe ich nur eingetragen um ein Feedback zu haben. Das Script läuft bis zur FTP-Verbindung. Hier muss ich jedes mal manuell die Zugangsdaten eingeben. Das ist unerwünscht, weil das Script hinterher per cron laufen soll.
    Zudem stellt sich mir die Frage wie ich das jeweils vorletzte Backup automatisch auf dem FTP-Server löschen lassen kann.
    Es soll jeweils nur die letzte und die aktuelle Sicherungskopie auf dem FTP-Server hinterlegt sein.

    Ich hoffe auf Unterstützung und beantworte gern Fragen, sollten noch welche geblieben sein.
    Danke schon mal.
    MFG

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.062
    zur Übergabe der Login-Parameter empfehle ich
    Code:
    man ftp
    oder eine (Google-)Suche nach "linux automatischer ftp login".

    Für den Dateinamen der vorletzten Sicherung würde ich die Studie von
    Code:
    man date
    anbieten...
    Ich bin root - ich darf das.

  3. #3
    Registrierter Benutzer Avatar von derRichard
    Registriert seit
    Nov 2001
    Beiträge
    5.069
    das rad muss man auch nicht immer zweimal erfinden
    http://wertarbyte.de/tartarus.shtml

    hth,
    //richard
    There are two factions of CS, the ones that hate computers, and the ones that hate science.

  4. #4
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Zitat Zitat von marce Beitrag anzeigen
    zur Übergabe der Login-Parameter empfehle ich
    Code:
    man ftp
    oder eine (Google-)Suche nach "linux automatischer ftp login".
    Was ich bei den Suchergebnissen vermisse, ist die Möglichkeit der Datei .netrc, siehe Manpage von ftp unter "THE .netrc FILE".

    Wenn man schon auf die Manpage verweist, kann man ja wenigstens noch ein Stichwort geben.

    Gruß
    L00NIX

  5. #5
    Registrierter Benutzer
    Registriert seit
    May 2003
    Beiträge
    45
    Danke derRichard und loonix, damit kann ich bisschen was anfangen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    May 2003
    Beiträge
    45
    So ich bin ein Stück weiter.
    Die Verbindung wird nun automatisch aufgebaut.
    Allerdings habe ich noch ein Problem.
    Das Script soll Dateien ( wechselnde Dateinamen = Projektname_Datum.bz2)
    die älter sind als 2 Tage automatisch löschen.
    Bisher verwende ich hier:
    Code:
    delete =`date` --date '-2 day' "$FILENAME"
    Allerdings bekomme ich dann folgende Ausgabe:

    Code:
    Could not delete =Sat: No such file or directory
    Was mache ich falsch? Wäre nett wenn mir da jemand weiter hilft.

    Das Script soweit ich bisher bin:
    Code:
    #!/bin/bash
    echo "Starte Projekt Backup"
    echo "backupe Projekt"
    echo "lege DB-Backup an"
    mysqldump -uUSER -pPASSWORT DB-NAME > backup.sql
    echo "DB-Backup fertig"
    echo "lege File-Backup an"
    echo "wechsel ins Verzeichnis"
    cd /PFAD/ZUM/PROJEKT/
    tar cfz Projekt.tar.gz httpdocs
    mv Projekt.tar.gz /home
    cd /home
    tar cfz BACKUP-NAME.tar.gz Projekt.tar.gz backup.sql
    DATUM=`date +%F_%H_%M_%S`
    FILENAME=GEWÜSCNTER-NAME_$DATUM.bz2
    bzip2 -c -9 BACKUP_NAME.tar.gz > $FILENAME
    rm BACKUPNAME.tar.gz
    echo "File-Backup fertig"
    echo "entferne Temp"
    rm Projekt.tar.gz
    rm backup.sql
    echo "baue FTP-Verbindung auf"
    ftp -n <<EOFTP
    open SERVER.XX
    user USER PASSWORT
    bin
    put $FILENAME
    delete =`date` --date '-2 day' "$FILENAME"
    quit
    EOFTP
    rm $FILENAME
    echo "Backup von PROJEKT abgeschlossen"
    Danke
    Geändert von nemesis77 (12.06.10 um 09:52 Uhr) Grund: Script-Code angefügt

  7. #7
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Nachdem ich mir dein Skript mal angeschaut habe ein paar Bemerkungen dazu:

    Kurze Zusammenfassung, was du machen willst (bitte korrigieren, falls ich da falsch liege):

    1) Du erzeugst einen SQL-Dump einer Datenbank
    2) Du erzeugst einen Tarball einer Webseite (httpdocs)
    3) Du packst SQL-Dump und Tarball der Webseite in einen neuen Tarball (Wozu?)
    4) Du bzipst diesen Tarball aus 3) (Wozu!?)
    5) Du löscht bei dem Vorgehen anfallende Temporäre Datien
    6) Du lädst den teilweise dreifach komprimierten Tarball via FTP hoch
    7) Du würdest gerne die Remote Datei löschen, wenn sie älter als 2 Tage ist


    Anmerkungen:

    Erstmal zu 7):
    Laut der Manpage ftp(1) nimmt delete nur den Dateinamen als Parameter. Dein date hat aber was in der Form "Sat Jun 12 ..." geliefert und diese Datei "Sat" findet er nicht.
    Außerdem verwendest du hier immer $FILENAME, was ja immer auf die aktuelle Datei zeigen müsste, oder? => Denkfehler?

    Warum die Schritte 3) und 4)?

    Temporäre Dateien sind, wo es geht, zu vermeiden!
    Damit entfällt Schritt 5).


    Verbesserungsvorschlag:

    Lege ein Verzeichnis /offline-backup oder dergleichen an, erstelle dort via cron deinen SQL-dump (gezippt) und den Projekt-Tarball. Hole dir anschließend dieses Verzeichnis von dem Server herunter (ftp, scp, etc.) und mache die Versionskontrolle auf deinem Backupsystem.


    Gruß
    L00NIX

  8. #8
    Registrierter Benutzer
    Registriert seit
    May 2003
    Beiträge
    45
    Danke für die schnelle Rückmeldung.
    Ja Du hast den Ablauf des Scripts richtig interpretiert.
    Um Diene Fragen zu beantworten: ich bin noch recht "frisch" was das programmieren betrifft. Ist eigentlich nicht mein Gebiet.

    Was $FILENAME betrifft hast Du wahrscheinlich recht. Meine Überlegung war das er dann den Dateinamen nimmt, den er anhand der DATE Angabe ermitteln müsste. Okay, Denkfehler.
    Wie würdest Du denn dann das Script realisieren?

  9. #9
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Zitat Zitat von nemesis77 Beitrag anzeigen
    Wie würdest Du denn dann das Script realisieren?
    So, wie ich es oben unter "Verbesserungsvorschlag" beschrieben habe.

    Ich würde "das Skript" also gar nicht so realisieren, sondern in kleinere Einzelteile aufspalten, die sich dann um das Erstellen der einzelnen Dumps und Tarballs kümmern. Anschließend würde ich diese Backupdaten dann über das Netzwerk holen.

    Auslöser kann dann das Backupsystem selbst (z.B. via Cron) sein. Wenn das Backupsystem selbst nicht immer an ist (z.B. der heimische Arbeitsrechner), dann kannst du auch die Backupdaten via Cron erzeugen lassen und dann, sobald du mit deinem Rechner online bist, das Abholen auslösen.

    Gruß
    L00NIX

  10. #10
    Registrierter Benutzer
    Registriert seit
    May 2003
    Beiträge
    45
    Nee der letzte Teil klappt nicht. Ich habe lediglich ftp-Zugang zum Backupsystem. Sonst nichts. Und auch nur 2GB Speicher, was der Grund dafür ist, warum ich die "alten" Backups löschen lassen möchte.
    Okay die ersten Schritte kleiner zu gestalten, werd ich wohl noch hin bekommen.
    Aber das löst leider nicht das dringlichere Problem.

  11. #11
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.229
    Zitat Zitat von nemesis77 Beitrag anzeigen
    Nee der letzte Teil klappt nicht. Ich habe lediglich ftp-Zugang zum Backupsystem. Sonst nichts. Und auch nur 2GB Speicher, was der Grund dafür ist, warum ich die "alten" Backups löschen lassen möchte.
    Dann überschreibe doch einfach immer die Backup-Datei auf dem Backupserver, indem du immer den gleichen Dateinamen nimmst? Ggf. musst du vorher ein delete auf den Dateinamen machen, den du anlegen willst.

    Wenn du sicherheitshalber doch mehre Versionen vorhalten willst, hier ein paar Gedanken zur Namensgebung der Backupdateien auf dem FTP-Server:

    Code:
    # backupfile="my-backup.$( date +%u ).tar.gz"
    # echo $backpfile
    my-backup.6.tar.gz
    Das liefert dir 7 Dateien, wobei die Zahl zwischen Dateiname und Endung 1 für Montag, 2 für Dienstag, etc. entspricht.

    Wenn 7 Dateien zu viel sind, es geht auch recht einfach mit zwei Dateien:
    Code:
    # backupfile="my-backup.$(( $( date +%j ) % 2 )).tar.gz"
    # echo $backpfile
    my-backup.1.tar.gz
    Hier ist die Zahl an ungeraden Tagen im Jahr 1, an geraden Tagen 0.

    Gruß
    L00NIX

  12. #12
    Registrierter Benutzer
    Registriert seit
    May 2003
    Beiträge
    45
    Hmm das wäre ein gangbarer Weg.
    Der Timeprint von der jeweiligen Backup-Datei ermöglicht mir auch die Unterscheidung des jeweiligen Backups um Änderungen am Projekt ungeschehen zu machen. Fein - danke dafür.

Ähnliche Themen

  1. add machine script unter samba opensuse 11
    Von gnoovy im Forum Linux als Server
    Antworten: 4
    Letzter Beitrag: 01.09.08, 23:05
  2. Backup Shell script
    Von Nostrike im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 03.09.04, 11:30
  3. Befehl im Shell Script beenden
    Von nitram-records im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 12.08.04, 11:28
  4. Script für ftp up/download
    Von _Cyber_ im Forum Linux Allgemein
    Antworten: 5
    Letzter Beitrag: 28.05.04, 06:05
  5. Problem mit Firewall IPCHAINS
    Von Zambo im Forum Router und Netzaufbau
    Antworten: 4
    Letzter Beitrag: 31.10.01, 21:37

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •