RSCNC mit zusätzlichem Backup Verzeichnis für gelöschte Dateien

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von shakky4711, 19.12.2007.

  1. #1 shakky4711, 19.12.2007
    shakky4711

    shakky4711 DOS-FAN

    Dabei seit:
    03.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    Ort:
    Freiburg
    Hallo,

    ich synchronisiere mit rsync einen Quellordner mit einem Zielordner ohne die in der Quelle gelöschte Dateien ebenfalls im Ziel zu löschen. Nun sollen genau diese Dateien zu Archivierungszwecken in einen dritten Ordner verschoben werden. Klingt einfach ganz simpel und sollte auch eigentlich für viele andere Benutzer interessant sein, habe aber noch keine Lösung gefunden die zuverlässig funktioniert, Dateinamen enthalten Leerzeichen und das bring viele Lösungen die ich gefunden habe aus dem Tritt.
    Umgebung: Windows 2000 mit Cygwin oder alternativ GNUutils32.

    Bitte helft mir, brauch das Gleiche später unter Suse oder Fedora mit BASH nochmal.

    Vielen Dank!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 19.12.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Was hast du bisher versucht?

    BTW Wird es hier nur für *nix eine Lösung geben, da die CYGWIN als Windowsanwendung hier OT ist.

    Leerzeichen in Dateinamen sind für die Bash/Ksh aber eine eher kleine Hürde.
    Falls du nicht selbst eine Lösung erstellen willst, solltest du in einem Anwendungsforum nachfragen.

    Gruß Wolfgang
     
  4. #3 shakky4711, 19.12.2007
    shakky4711

    shakky4711 DOS-FAN

    Dabei seit:
    03.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    Ort:
    Freiburg
    Hallo Wolfgang,

    ich habe mir zwei Listen Namens quelle und ziel erstellt die Dateinamen samt Pfad enthalten und mittels grep -v -f quell ziel eine Datei erstellt die genau die zu kopierenden Dateien enthält. Mittels einer While do Schleife sollen die Dateien dann einfach mit mv verschoben werden. Wie gesagt habe ich die gleiche Aufgabenstellung in Kürze auf einem normalen Linux System.
     
  5. #4 Wolfgang, 19.12.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Wenn die Dateien syncron sind (also pro Zeile die Quelle und das Ziel zusammenpassen)
    Schnellschuß ungeprüft und ohne Test ob Datei schon vorhanden.

    Code:
    exec 3<sourcefile;
    exec 4<targetfile;
    while read S <&3 &&read T <&4; do
    echo "verschiebe:"
    echo "$S" "$T";
    # hier echo durch mv ersetzen.
    done
    
    Ist desweiteren ein Beispiel wie man zwei Dateien zugleich einlesen/verarbeiten kann.
    Vlt. braucht das ja mal jemand.

    ;)
    Gruß Wolfgang
     
  6. #5 shakky4711, 20.12.2007
    shakky4711

    shakky4711 DOS-FAN

    Dabei seit:
    03.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    Ort:
    Freiburg
    Hallo,

    ich muss gestehen um dieses Script zu verstehen reichen meine Kenntnisse wahrhaft nicht aus. Ich habe in einem anderen Thread ein Script gefunden mit einer while do Schleife und der Eingabe der zu kopierenden Dateien durch eine Liste, hoffe es zum Laufen zu bekommen, insbesondere mit den Anpassungen für Cygwin.
    Vielleicht hat ja schon jemand die gleiche Aufgabenstellung gehabt und eine lauffähige Lösung.

    Nochmals vielen Dank für die schnelle Reaktion!
     
  7. #6 Wolfgang, 20.12.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Wo ist das Problem?

    Hier mal kurz eine Erklärung:
    Code:
    # Binde Filedeskriptor 3 an Datei sourcefile - dort stehen die zu verschiebenden Dateien mit Pfad
    exec 3<sourcefile;
    # Binde Filedeskriptor 4 an Datei targetfile - dort stehen die entsprechenden Ziele mit Pfad
    exec 4<targetfile;
    # Einlesen beider Dateien Zeile für Zeile
    while read S <&3 &&read T <&4; do
    # S enthält Zeile aus Source T Zeile aus Target 
    echo "verschiebe:"
    echo "$S" "$T";
    # hier echo durch mv ersetzen um das ganze Scharf zu machen
    done
    
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

RSCNC mit zusätzlichem Backup Verzeichnis für gelöschte Dateien