Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Brauche Dringend Hilfe !!!!!!!!!!!!!!!!!!

  1. #1
    Gast

    Angry Brauche Dringend Hilfe !!!!!!!!!!!!!!!!!!

    Hallo. dieses Problem habe ich schon ohne erfolg in Spotlight.de unter Linux gestellt.
    Ich hoffe hier entrprechende hilfe zu bekommen

    ich hatte gestern einen Plattencrash !!!!!!!!!!! :-(

    Folgendes Problem:

    Nach dem ich den Rechner neu gestartet habe und mit e2fsck einen teil meiner Daten (nicht Betriebssystem, liegt gott sei dank auf einer anderen Platte) retten konnte, sind einige Dateien defekt, obwohl sie die gleiche Dateigröße und Datum haben wie auf dem Backup.
    Backup von Freitag habe ich auf eine andere Platte kopiert.
    Kaputter Bereich ist in "/home"
    Datensicherung von Freitag ist in "/home1"

    Jetzt möchte ich sämtliche Daten wieder zurückkopieren die seit der Datensicherung nicht geändert wurden.
    Mit "cp -a -u" geht es nicht, da ja nur Dateien kopiert werden die nicht neuer sind als das Backup, die Dateien die gleiche Länge und gleiches Datum haben werden nicht überschrieben.
    Mit tar habe ich es auch schon versucht, gleiches Ergebniss
    Ich bräuchte ein script, das mir alle Dateien kopiert, die seit Freitag nicht mehr verändert wurden.

    PS: kann kein Perl, also BITTE nicht nur eine Anleitung wie gehen könnte, sondern möglichst eine Lösung.


  2. #2
    Gast

    Post

    Hi,

    kann auch kein Perl aber mit der bash + utils geht das auch.

    Nennen wir folgendes Skript cp_equal.sh

    Code:
    #!/bin/bash
    FILE=/home/jgbauman/unsorted/trash/test/home/$1
    BACKUP=/home/jgbauman/unsorted/trash/test/home1/$1
    
    if test ! -e $BACKUP; then 
      echo $BACKUP doesn´t exist
      exit
    fi
    if test ! -e $FILE; then 
      echo $FILE doesn´t exist
      exit
    fi
    # not newer ...
    if test ! $FILE -nt $BACKUP ; then
      # ... and not older ...
      if test ! $FILE -ot $BACKUP ; then
        # ... means the same time
        # get sizes
        S1=`wc -l $FILE | cut -f1 -d" " `
        S2=`wc -l $BACKUP | cut -f1 -d" "`
        # test, don´t know if neccessary
        if test ! $S1 = $S2; then
          # these file perhaps need manual checking
          echo same time, but differ in size: $BACKUP and $FILE;
          #comment out following line if you want to copy them regardlessly
          exit
        fi
        #equal size
        #echo the action
        echo copying $BACKUP to $FILE
        ls -l $BACKUP
        ls -l $FILE
        echo
        #uncommet this for the real action
        #cp -a $BACKUP $FILE
        
      fi
    fi
    Liegt es im Pfad und ist ausfuehrbar, dann kannst Du es mit
    Code:
    cd /home1
    find . -type f -exec cp_equal.sh \{\} \;
    auf alle Dateien unter /home1 loslassen.

    Der eigentliche cp Befehl ist erst mal auskommentiert, damit die testen kannst ob's auch das ist was Du willst.
    Auch werden Dateien mit gleichen Datum, aber unterschiedlicher Laenge gesondert behandelt.

    Also erst mal testweise Laufen lassen und dann entscheiden ob es das ist was du brauchst.

  3. #3
    Gast

    Red face

    Vielen Dank für das Script.
    habe nur ein RIESEN Problem mit den Copy Befehl.
    Leider sind auch Dateien mit Leerzeichen in Dateiname dabei, und dei werden dann falsch erkannt.
    Habe es schon mit " ' ´ und ` Versicht aber nicht geht.
    Lasse es als in einer bash laufen.

  4. #4
    EJ Radim
    Gast

    Post

    Servus Christoph!

    Probier´s mit \ und /!
    Wie das genau hinhaut, kannst du mit der TAB-Taste herausfinden. Erstelle in der grafischen Oberfläche unter / ein Verzeichnis mit einem Leerzeichen (Beispiel Verzeichnis).

    Geh in einen Terminal und tipp folgendes ein:
    cd Beis --> drücke anschließend die TAB-Taste. Es sollte dann der Verzeichnisname automatisch ergänzt werden. Dass sollte dann ungefähr so aussehen:
    cd Beispiel\ /Verzeichnis

    Eigentlich sollte das auch mit Dateien funktionieren.

    greetings,
    Schorschi

    PS: In deinem letzten Posting hast du ein mehr oder weniger wichtiges Wort in der letzten Zeile vergessen!


    [Dieser Beitrag wurde von EJ Radim am 21. März 2001 editiert.]

  5. #5
    pitu
    Gast

    Post

    Wie waere es mit:

    cd /home1
    tar cSpf ./ | (cd /home ; tar --newer=<datum> -xvSpf -)

    Damit kopierst du alle Dateien, die "neuer" sind als Datum.

    thorsten

    ------------------
    Thorsten Wandersmann
    SuSE GmbH, Nuernberg

  6. #6
    Gast

    Lightbulb

    Nützt nur leider nichts, denn es waren ja nach dem Absturz Dateien vorhanden mit gleichem Datum und gleicher Dateilänge, aber falschem Inhalt !

    Gruß Christoph

  7. #7
    pitu
    Gast

    Post

    Du hattest nur gesagt

    Ich bräuchte ein script, das mir alle Dateien kopiert, die seit Freitag nicht mehr verändert wurden.

    Aber du hast recht, der Teil geht damit natuerlich nicht. Hatte den oberen Teil:

    Jetzt möchte ich sämtliche Daten wieder zurückkopieren die seit der Datensicherung nicht geändert wurden.

    ueberthorsten

    ------------------
    Thorsten Wandersmann
    SuSE GmbH, Nuernberg

  8. #8
    Gast

    Post

    Code:
    #!/bin/bash
    FILE=/home/${1/ /\\ }
    BACKUP=/home1/${1/ /\\ }
    Aendere die ersten beiden Zeilen, dann sollte es klappen


  9. #9
    Gast

    Talking

    HEUREKA!
    und Entschuldigung für die vielen Schreibfehler in dem letzten Beitrag, aber ich habe gestern Nacht bis 3:00 Uhr über diesem Problem gebrütet, und bin um 6:00 Uhr reichlich übermüdet wieder aufgestanden. ;-)

    Das Ganze Geheimnis ist die richtige plazierung der Anführungszeichen.

    Hier mein Script wie es geht :-)
    ->
    #!/bin/bash
    # /root/bin/cpold
    # $1 = alte Verzeichniss /home1
    # $2 = neues Verzeichniss /home
    cd /root/bin
    if test ! -d "$2" ; then
    echo "$2 ist kein Verzeichniss"
    exit 1
    elif test ! -d "$1" ; then
    echo "$1 ist kein Verzeichniss"
    exit 1
    fi
    for i in "$1"/* ; do
    Datei=`basename "$i"`
    if test -d "$1"/"$Datei" ; then
    if test -d "$2"/"$Datei" ; then
    echo "Verzeichniss $1/$Datei ist OK"
    /root/bin/cpold "$1"/"$Datei" "$2"/"$Datei"
    else
    echo "Verzeichniss $2/$Datei fehlt und wird kopiert"
    cp -a "$1"/"$Datei" "$2"/"$Datei"
    fi
    elif test -f "$1"/"$Datei" ; then
    if test "$2"/"$Datei" -nt "$1"/"$Datei" ; then
    echo "Datei $1/$Datei ist neuer als $2/$Datei"
    else
    if test -e "$2"/"$Datei" ; then
    echo "Datei $2/$Datei wird ueberschrieben"
    else
    echo "Datei $2/$Datei fehlte und wird kopiert"
    fi
    cp -a "$1"/"$Datei" "$2"/"$Datei"
    fi
    fi
    done

    ->
    Ich habe den Fehler gemacht und bei den copy Befehlen folgendes Format gehabt - cp -a "$1/$Datei" - so kam es immer zu Fehlern!

    DANKE FÜR EURE HILFE, ich habe jetzt fast alles wieder !!
    Christoph

Lesezeichen

Berechtigungen

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