Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Script für Tagessicherung

  1. #1
    Gast

    Post Script für Tagessicherung

    Hallo,

    alle in einem Verzeichnis geänderten Daten des Vortages sollen in ein File geschrieben und gezippt werden. Das Zip-File sollte mit WINZIP einsehbar sein. Das File bekommt das aktuelle Datum als Namen.

    Gibt es bereits unterstützende Progs bei Suse?
    Findet man Scripte mit einer ähnlichen Lösung ...wo?
    Kann mir jemand Tipps geben wo ich ansetzen kann?

    cp und tar habe ich schon ausprobiert, hat aber nicht so ganz geklappt (Anfänger).

    Über Tipps zur Lösungsfindung würde ich mich freuen.

    Schon mal Danke im Voraus!

    rfi

  2. #2
    Gast

    Post

    Hi,
    ich hoffe ich kann Dir helfen. Allerdings finde ich nichts so ungut, wie Sicherungen, bei denen nicht alles gesichert wird. Insofern weiß ich momentan auch nicht, wie man die Dateien vom letzten Tag holen könnte.
    Aber die Sicherung aller Dateien in einem Verzeichnis in ein Zip mit Tagesdatum sollte so gehen:

    ***********
    #!/bin/bash

    cd /VERZEICHNIS-PFAD
    # hier richtigen Pfad eingeben
    name=`date "+./%Y-%m-%d"`
    /usr/bin/zip -q -v -r $name.zip * >./$name.doc
    ************
    in $name.doc stehen alle Dateien, die gezippt wurden.
    MfG,
    Werner

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.10.1999
    Ort
    Dresden
    Beiträge
    255

    Post

    Finde alle Dateien im aktuellen Verzeichnis, die innerhalb der vergangenen 24 Stunden modifiziert wurden:

    <pre>
    find . -mtime -1
    </pre>

    Thomas

  4. #4
    Manfred-B
    Gast

    Post

    Hallo
    Nur die Files von gestern? Kein Problem
    find /verzeichnis -daystart -mtime 1
    Von gestern 0:00 - 23:59:59

    Mit dem Datum von gestern? Nicht so einfach.
    Wieviele Tage hat der Monat? mal so mal so

    Code:
    #!/bin/bash
    
    # wo du wolle?
    verzeichnis=$1           # das 1. Argument in der kommandozeile
    : ${verzeichnis:=~/}     # homedir ist default falls kein Argument
    zielverz=/tmp
    
    i=$(find ${verzeichnis} -daystart  -type f -maxdepth 1 -mtime 1) # 1 für gestern
    if test -z "${i}";
    then
      echo nichts gefunden
      exit 1
    fi
    ### min 1 filename gefunden ###
    set -- ${i} # den positionsparametern zuweisen
                # den erstbesten nehmen für das datum von gestern "${1}"
                # alle mit zip komprimieren "${i}"
    zip ${zielverz}/$(date -r ${1} +%d.%m.%Y)  ${i}
    Weis das jemand besser?
    Ich suche schon länger nach einem Weg (mit der bash) um einen UNIX timestamp (sek seit 31.12.1969) in ein Datum zurückzuwandeln.
    Z.B. in /etc/adjtime
    Damit wäre auch dies nur noch eine einfache Rechnung

    Grüsse

  5. #5
    Gast

    Post

    Hallo,

    vielen Dank für die Infos. Das hilft mir schon sehr weiter. Ich werde nun mal weiterbohren.

    Grüße

    rfi

  6. #6
    Gast

    Post

    Hallo Manfred-B,

    ich nutze dein Script mit einer kleinen Einschränkung:

    Filenamen in der Form: "Erstes dokument.doc"
    werden von zip nicht verarbeitet.

    Das Leerzeichen im Filenamen wird nicht angenommen und als Teil des Pfades für zip interpretiert.

    Man pages durchsucht/ Suse-Datenbank durchsucht/ zip-homepage durchsucht-> keine Lösung gefunden.

    Kann mir hier jemand weiterhelfen?

    Schon mal Danke!

    rfi

  7. #7
    Gast

    Post

    Moin,

    setz die $i mal in Anführungszeichen

    = "$i"


  8. #8
    Gast

    Post

    Hi mws,

    hab ich gemacht. Es hat sich nichts geändert.
    Fehlermeldung:

    zip warning: name not matched: /Erstes
    zip warning: name not matched: document.doc

    zip nimmt immer noch an "Erstes" wäre ein Pfadbestandteil.

    Danke für die prompte Antwort!! Mist, fast alles funktioniert, nur diese Kleinigkeit!

    rfi


    [Dieser Beitrag wurde von rfi am 08. Dezember 2000 editiert.]

  9. #9
    Manfred-B
    Gast

    Post

    moin moin
    Schreibe anstelle von $i => find ... -print0 also:
    zip ${zielverz}/$(date -r ${1} +%d.%m.%Y) $(find test/ -print0)
    der haken: falls zufällig der erste filename ein leerz enthält (bei der auswertung des datums) gibts einen fehler, sodaß es nur meistens geht aber immerhin

    Sobald man einer variablen eine dateiliste zuweist werden alle newline zu spaces; i=$(find test/ -printf %p\\n) funkt. also auch nicht!
    Vieleicht kann man auch was mit der env.var $IFS machen?

    Grüsse

  10. #10
    Manfred-B
    Gast

    Cool

    Hallo!
    Also das war ja schwierig!
    Code:
    #!/bin/bash
    
    verzeichnis=$1           # das 1. Argument in der kommandozeile
    : ${verzeichnis:=~/}     # homedir ist default falls kein Argument
    zielverz=/tmp
    IFS='°
    '      # Internal File Separator - ich hab mich für '°' und newline entschieden! somit sollte kein '°' in den filename vorkommen!
    i=$(find ${verzeichnis} -daystart  -type f -maxdepth 1 -mtime 1 -printf %p°) # 1 für gestern
    #i=$(find ${verzeichnis} -daystart  -type f -maxdepth 1 -mtime 1 -printf '%Td.%Tm.%TY ')
            # eine liste mit dem Datum von gestern
    
    if test -z "${i}";
    then
      echo nichts gefunden
      exit 1
    fi
    ### min 1 filename gefunden ###
    set -- ${i} # den positionsparametern zuweisen
                # den erstbesten nehmen für das datum von gestern "${1}" alle datum sollten gleich sein
                # alle mit zip komprimieren $(find ... ) eben nochmal
    #IFS=':
    #'
    #zip ${zielverz}/${1} $(find ${verzeichnis} -daystart  -type f -maxdepth 1 -mtime 1  -printf %p : )
    
    zip ${zielverz}/$(date -r ${1} +%d.%m.%Y)  ${i}
    entweder die auskommentierten oder die aktiven Zeilen - jetzt sollen beide gehen

    Die zuweisung IFS=°newline gilt nur in der subshell in der das skript ausgeführt wird!
    Gut so, sonst funktioniert nichts mehr, nichtmal 'ls' da für ls ein alias gesetzt ist welcher word splitting benötigt '/bin/ls' geht also noch

    Die Methode mit find das Datum auszugeben (-printf %T...) ist sicher eleganter.

    Dennoch bin ich sehr unzufrieden mit einer
    solchen Vorgehensweise.
    Es muß einen Weg geben das Datum von gestern korrekt zu errechnen!

    Grüsse

    [Dieser Beitrag wurde von Manfred-B am 10. Dezember 2000 editiert.]

  11. #11
    Gast

    Post

    Hallo Manfred-B,

    das ist stark.. und wesentlich mehr als ich erwartet hatte.

    Das Script funktioniert einwandfrei und hat sich bereits in Verbindung mit älteren Gesamtsicherungen bewährt.

    Vielen Dank nochmal!!!

    rfi

Lesezeichen

Berechtigungen

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