rsync - allg. 'beste' Einstellungen + backup-dir

Dieses Thema im Forum "Anwendungen" wurde erstellt von wilder, 16.12.2007.

  1. wilder

    wilder GNU/Linux Anfänger

    Dabei seit:
    12.09.2006
    Beiträge:
    50
    Zustimmungen:
    0
    Hallo,

    seit ein paar Wochen nutze ich rsync, um mein home-Verzeichnis auf ein USB-HD zu sicher. Ich nutze auch die Option backup-dir, durch die es leider zu einer starken Verschachtelung (viele Unterverzeichnisse) kommt. Das möchte ich einschränken, notfalls abschalten.

    Mit folgenden Optionen rufe ich rsync auf:
    Die Option "--backup-dir=.Backup/$(date '+%y%m%d')" bewirkt bei mehrfachem Update eine Unterordnerstruktur z.B. wie folgt: .Backup/071212/.Backup/071212/.Backup/071212/.Backup/071212/[etc.]

    Wie kann ich einstellen, dass es nicht zu dieser Verschachtelung kommt? Oder gibt es einen schlaueren Umgang mit den Optionen? Ist die Backup-Option nötig bzw, kann ich sie einschränken? Kenne mich mit Backup-Techniken nicht so gut aus.

    Gruß, W.
     
  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. wilder

    wilder GNU/Linux Anfänger

    Dabei seit:
    12.09.2006
    Beiträge:
    50
    Zustimmungen:
    0
    Hallo,

    (1) habe bisher zu obigem "Problem" keine Lösung gefunden. Da durch die Option --backup-dir= ein Verzeichnis mit vielen Unterverzeichnissen in der Form von /.Backup/[Datum]/.Backup/[Datum]/..etc. entsteht und wenn ich zum 100. Mal ein Backup durchführe, wird ein 200fach verschachteltes Verzeichnis von rsync angelegt.. Ich kenne mich nicht sehr gut mit Linux aus, doch stößt das System nicht irgendwann an seine Grenzen? Nautilus muss ab dem 20. Unterverzeichnis länger laden.. wenn ich nicht etwas Grundlegendes falsch mache, muss ich sagen, dass diese Option "stümperhaft" wirkt..


    (2) Ich will auch einige Verzeichnisse aus dem Backup-Vorgang ausschließen. Mit der Option "--exclude-from=FILE" soll das funktionieren.
    Code:
    rsync --force --ignore-errors --delete --delete-excluded --backup --backup-dir=.Backup/$(date '+%y%m%d') --progress -av --exclude-from=$AUSNAHMEN /home/user /media/USB-SAVE/user | grep -v "files..." >> $LOGVERZ$DATUM"_"$VERZ01".log"
    Hier "--exclude-from=$AUSNAHMEN" wobei diese Datei die Liste enthält:
    Code:
    AUSNAHMEN="/home/user/backup_ausnahmeliste"
    Sie sieht bei mir so aus:
    Code:
    #
    # Ausnahme-Dateiliste für Backup-Script
    #
    *~
    */.Trash
    */Downloads/Ordner1*
    Die letzte Zeile wird nicht berücksichtigt für die Ausnahme, da es logischerweise keinen Ordner oder keine Datei gibt die "*/Downloads/Ordner1*" heißt, es müsste heißen "Ordner1*". Aber dann werden nicht nur die Ordner1* im Verzeichnis Downloads ignoriert, sondern alle die unterhalb des Backup-Ordners liegen. Kann ich irgendwie festlegen, dass nur bestimmte Verzeichnisse in einem anderen bestimmten Verzeichnis ignoriert werden?

    Gruß, W.
     
  4. #3 bitmuncher, 29.12.2007
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Wenn es dir darum geht, dass deine Backups als Ordner-Namen das Datum enthalten, musst du nicht --backup-dir verwenden, sondern kannst einfach folgendes Konstrukt nutzen:

    Code:
    rsync [parameter] /home/user /media/USB-SAVE/user/backup-`date +%d.%M.%Y`
    
    Wichtig: Backticks beim date-Befehl benutzen und keine einfachen Anführungsstriche.

    Deine Exclude-Liste wirst du leider so genau wie möglich spezifizieren müssen. Mit '--exclude-from' hab ich allerdings auch eher schlechte Erfahrungen gemacht und verwende daher nur noch das einfach '--exclude', das man ja auch mehrfach angeben kann.
     
  5. #4 wilder, 29.12.2007
    Zuletzt bearbeitet: 29.12.2007
    wilder

    wilder GNU/Linux Anfänger

    Dabei seit:
    12.09.2006
    Beiträge:
    50
    Zustimmungen:
    0
    Hallo,

    also folgende Ziele will ich mit rsync grob erreichen:
    1. ein komplettes Backup von QUELLE auf ZIEL (USB-HD) sichern
    2. neue Versionen von Dateien und neue Dateien von QUELLE auf ZIEL (USB-HD) sichern, dann alte Versionen von Dateien in ZIEL in anderem Verzeichnis (mit Datum im Namen) sichern
    3. gelöschte Dateien aus QUELLE im ZIEL (USB-HD) in ein anderes Verzeichnis (mit Datum im Namen) verschieben

    Aber ich weiß nicht, da ich mich mit Backup-Techniken nicht gut auskenne, welche Einstellung mit rsync (mit Backup allg.) die schlausten Einstellungen sind. Wollte ich in diesem Thread herausfinden.

    Dein Vorschlag zielt in die Richtung, bei jedem Backup-Vorgang ein komplettes Backup durchzuführen?

    edit: zum Thema "--backup-dir"
    Vielleicht macht es Probleme, dass ich für den backup-dir-Pfad "--backup-dir=.Backup/$(date '+%y%m%d')" erstens ein / im Pfad hab (also ein weiteres Unterverzeichnis) anlege und zweitens, dass sich der backup-dir-Pfad mit jedem Tag "$(date '+%y%m%d')" ändert..? Oder der backup-dir-Pfad darf nicht im ZIEL-Verzeichnis liegen, sondern muss außerhalb sein/über diesem liegen...?

    Gruß, W.
     
  6. #5 wilder, 04.03.2008
    Zuletzt bearbeitet: 04.03.2008
    wilder

    wilder GNU/Linux Anfänger

    Dabei seit:
    12.09.2006
    Beiträge:
    50
    Zustimmungen:
    0
    hallo zusammen,

    mein backup-skript sieht jetzt folgendermaßen aus. es kann gerne von anderen genutzt werden. keine haftung bei problemen. :)

    teils erklären die kommentare das script. zu erwähnen wäre noch eine einleitung. das script sichert mehrere verzeichnisse im home-verzeichnis des angegebenen benutzers, die im array VERZEICHNISSE gelistet werden. der mount-punkt der USB-Partition auf die gesichert werden soll, muss unter USBHD angegeben werden.
    bei jedem backupvorgang wird je verzeichnis eine log-datei erstellt. für diese log-dateien muss auch ein verzeichnis angegeben werden (LOGVERZ). darin sind alle gesicherten dateinen gelistet.
    dann gibt es noch eine ausnahmeliste, diese ist in einer externen text-datei gesichert (AUSNAHMEN). sieht bei mir folgend aus:
    Code:
    #
    # Ausnahme-Dateiliste für Wilders-Backup-Script-2008
    #
    # Jede Zeile entspricht einem Verzeichnis/einer Datei, das/die beim Backup nicht berücksichtigt (ignoriert) werden soll.
    # Angabe mit komplettem Pfad; komplettes Verzeichnis ausnehmen mit /* hinter den Verzeichnisnamen. Oder nur Teil des Namens und mit Wildcats, *, ?
    #
    *~
    */.Trash*
    
    alle dateien/verzeichnisse die auf "~" enden und mit ".Trash" beginnen werden nicht berücksichtigt.

    hier das backup-script:
    Code:
    #!/bin/sh
    
    #
    # Wilders-Backup-Script-2008
    # Das Skript sichert folgende Verzeichnisse auf eine USB-Festplatte: ...
    #
    
    # Benutzername angeben:
    BENUTZER="user"
    
    # mount-Verzeichnis des externen USB-HD
    USBHD="/media/USB-HD"
    
    # Array für zu sichernde Verzeichnisse; Abruf über ${VERZEICHNISSE[0]}, ${VERZEICHNISSE[1]} usw.
    VERZEICHNISSE=("Verzeichnis01" "Verzeichnis02")
    
    # Vom Backup ausgenommenen Verzeichnisse und Dateien, siehe backup_ausnahmeliste
    AUSNAHMEN="/home/$BENUTZER/Scriptverzeichnis/backup_ausnahmeliste"
    
    # Dateumabfrage für Backup-Verzeicnis-Namen; ausführbare Kommandos werden immer in $(...) geschrieben, hier "date '+%y%m%d'"
    DATUM=$(date '+%y%m%d')
    
    # Log-Dateien-Verzeichnis; ein abschließendes / ist nötig, s.u.
    LOGVERZ="/home/$BENUTZER/Scriptverzeichnis/backup-logs/"
    
    
    # prüfe, ob $USBHD existiert; ob USB-Festplatte angeschlossen ist.
    if [ -e $USBHD ]; then
    
      # PBELEGT enthält Zahl, wie viel Prozent belegt sind; wenn größer als 96%, dann Abbruch (siehe if-Anweisung)
      # ausführbare Kommandos werden immer in $(...) geschrieben, hier "df $USBHD ..."
      PBELEGT=$(df $USBHD | tail -n1 | sed -e 's/.* \([0-9]\{1,3\}\)%.*/\1/')
      
      # prüfe, ob genug Festplattenplaz auf USB-SAVE frei ist (min 5%)
      if [ $PBELEGT -lt 96 ]; then
    
        # Beginne Schleife für das Array VERZEICHNISSE; @ bewirkt Zugriff auf komplettet Array
        for i in ${!VERZEICHNISSE[@]}
        do
    
        VERZ=${VERZEICHNISSE[i]}
    
        # prüfe, ob Verzeichnis auf externer USB-HD angeschlossen ist
        if [ -e $USBHD/$VERZ ]; then
    
          echo ""
          echo "*** Start von Backup-\""$VERZ"\" ***"
          # Datums- und Zeitstempel in Logdatei eintragen; Option -e, damit die Backslash-Operatoren funktionieren, z.B. \n für neue Zeile
          echo -e "\n\n**********************************************************************\n******************** "$(date)" ********************\n**********************************************************************" >> $LOGVERZ$DATUM"_"$VERZ".log"
          # Sichert Verzeichnis /home/$BENUTZER/$VERZ und erstelle Log-Datei DATUM_$VERZ.log in ./backup-logs.
          # Dateiausgabe mit > in txt-Datei umleiten (alte überschreiben), mit >> umleiten und an alte anhängen
          rsync --force --ignore-errors --delete --delete-excluded --backup --backup-dir=../.Backup/$(date '+%y%m%d')_$VERZ --progress -av --exclude-from=$AUSNAHMEN /home/$BENUTZER/$VERZ/ $USBHD/$VERZ | grep -v "files..." | grep -v "    " >> $LOGVERZ$DATUM"_"$VERZ".log"
          echo "*** Ende  von Backup-\""$VERZ"\" ***"
          echo ""
    
        fi
        # Ende von prüfe auf externes USB-HD
    
        done
        # Ende der Schleife für das Array VERZEICHNISSE
    
      else
    
        echo ""
        echo "Es ist nicht mehr ausreichend Speicherplatz auf"
        echo "$USBHD vorhanden. $PBELEGT % sind belegt."
        echo ""
    
      fi
      # Ende Speicherplatz-Test
    
    else
    
      echo ""
      echo "Bitte USB-Festplatte mit Partition \"$USBHD\" anschließen."
      echo ""
    
    fi
    # Ende von prüfe auf $USBHD
    wenn ihr noch vorschläge zur verbesserung oder vereinfachung gibt, bitte schreiben? bin kein bash-kenner und kann sein, dass ich da etwas übersehen hab. bei mir funktioniert das script mit rsync wunderbar.

    in den rsync-optionen habe ich das backup-dir außerhalb des basis-backup-verzeichnisses angelegt, damit es nicht mehr zu einer unendlichen verschachtelung kommen kann. nachteil: nur noch einmaliges sichern pro tag, denn sonst wird im backup-dir überschrieben.
    Code:
    rsync --force --ignore-errors --delete --delete-excluded --backup --backup-dir=../.Backup/$(date '+%y%m%d')_$VERZ --progress -av --exclude-from=$AUSNAHMEN /home/$BENUTZER/$VERZ/ $USBHD/$VERZ | grep -v "files..." | grep -v "    " >> $LOGVERZ$DATUM"_"$VERZ".log"
    grüße,w.
     
  7. michse

    michse Grünschnabel

    Dabei seit:
    28.10.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo wilder und unixboard,

    ich hab dein script mal eiskalt abgekupfert :-) und meinen bedürfnissen angepasst.

    leider entsteht mir ein unerklärliches problem. im home verzeichnis des nutzers A funktioniert alles. ich kann alle verzeichnisse sichern oder nur einzelne angegebene (VERZEICHNISSE=("linux") ).

    kopiere ich das script aber in die gleiche verzeichnisstruktur des Nutzers B springt er an der stelle "if [ -e $USBHD/$VERZ ]; then" aus der Schleife und führt kein backup durch.

    Code:
    #!/bin/sh
    
    #
    # B-Backup-Script-2008
    # Das Skript sichert folgende Verzeichnisse auf eine USB-Festplatte: ...
    #
    
    # Benutzername angeben:
    BENUTZER="B"
    
    # mount-Verzeichnis des externen USB-HD
    USBHD="/mnt/homebackup/$BENUTZER"
    
    # Array für zu sichernde VERZEICHNISSE; Abruf über ${VERZEICHNISSE[0]}, ${VERZEICHNISSE[1]} usw.
    VERZEICHNISSE=("v")
    
    # Vom Backup ausgenommenen VERZEICHNISSE und Dateien, siehe backup_ausnahmeliste
    AUSNAHMEN="/home/$BENUTZER/backupscript/backup_ausnahmeliste"
    
    # Datumabfrage für Backup-Verzeicnis-Namen; ausführbare Kommandos werden immer in $(...) geschrieben, hier "date '+%y%m%d'"
    DATUM=$(date '+%d%m%y')
    
    # Log-Dateien-Verzeichnis; ein abschließendes / ist nötig, s.u.
    LOGVERZ="/home/$BENUTZER/backupscript/backup-logs/"
    
    
    # prüfe, ob $USBHD existiert; ob USB-Festplatte angeschlossen ist.
    if [ -e $USBHD ]; then
    
      # PBELEGT enthält Zahl, wie viel Prozent belegt sind; wenn größer als 96%, dann Abbruch (siehe if-Anweisung)
      # ausführbare Kommandos werden immer in $(...) geschrieben, hier "df $USBHD ..."
      PBELEGT=$(df $USBHD | tail -n1 | sed -e 's/.* \([0-9]\{1,3\}\)%.*/\1/')
      
      # prüfe, ob genug Festplattenplaz auf USB-SAVE frei ist (min 5%)
      if [ $PBELEGT -lt 96 ]; then
    
        # Beginne Schleife für das Array VERZEICHNISSE; @ bewirkt Zugriff auf komplettet Array
        for i in ${!VERZEICHNISSE[@]}
        do
    
        VERZ=${VERZEICHNISSE[i]}
    
        #prüfe, ob Verzeichnis auf externer USB-HD angeschlossen ist
    	if [ -e $USBHD/$VERZ ]; then
    
    	  echo ""
          echo "*** Start von Backup-\""$VERZ"\" ***"
     	  # Datums- und Zeitstempel in Logdatei eintragen; Option -e, damit die Backslash-Operatoren funktionieren, z.B. \n für neue Zeile
          echo -e "\n\n**********************************************************************\n******************** "$(date)" ********************\n**********************************************************************" >> $LOGVERZ$DATUM"_"$VERZ".log"
          # Sichert Verzeichnis /home/$BENUTZER/$VERZ und erstelle Log-Datei DATUM_$VERZ.log in ./backup-logs.
          # Dateiausgabe mit > in txt-Datei umleiten (alte überschreiben), mit >> umleiten und an alte anhängen
          rsync --force --ignore-errors --delete --delete-excluded --backup --backup-dir=./.Backup/$(date '+%d%m%y')_$VERZ --progress -av --exclude-from=$AUSNAHMEN /home/$BENUTZER/$VERZ/ $USBHD/$VERZ | grep -v "files..." | grep -v "    " >> $LOGVERZ$DATUM"_"$VERZ".log"
    	  echo "*** Ende  von Backup-\""$VERZ"\" ***"
          echo ""
    
        fi
        # Ende von prüfe auf externes USB-HD
    
        done
        # Ende der Schleife für das Array VERZEICHNISSE
    
      else
    
        echo ""
        echo "Es ist nicht mehr ausreichend Speicherplatz auf"
        echo "$USBHD vorhanden. $PBELEGT % sind belegt."
        echo ""
    
      fi
      # Ende Speicherplatz-Test
    
    else
    
      echo ""
      echo "Bitte USB-Festplatte mit Partition \"$USBHD\" anschließen."
      echo ""
    
    fi
    
    # Ende von prüfe auf $USBHD
    Das Verzeichnis "v" existiert. gebe ich kein verzeichnis an, springt er in die schleife. rechte habe ich kontrolliert.

    wenn jemand bitte einen tip hat!

    Danke Euch
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 tuxlover, 29.10.2008
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    vielleicht mit -d prüfen ob das verzeichnis existiert bzw. ob die hd eingehängt ist. für die berechnung der festplattengröße habe ich in meinen bashtools eine methode entwickelt wie man das überprüfen kann.
     
  10. michse

    michse Grünschnabel

    Dabei seit:
    28.10.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo tuxlover,

    danke für den denkanstoß. ich hab es jetzt rausgefunden. nicht das Script nutzer B war falsch sondern das von A habe ich falsch benutzt. naja.

    Scheinbar ist im script ein Fehler oder ich verstehe es falsch, denn die Stelle
    Code:
    if [ -e $USBHD/$VERZ ]; then
    wertet aus, ob am Ziel mein angegebenes Verzeichnis(se)

    Code:
    VERZEICHNISSE=("v")
    
    existiert. Wenn nicht führt es kein backup durch - unlogisch.
    Gebe ich kein Verzeichnis an, führt es ein komplettes backup durch - logisch
    gebe ich dann ein spezielles verzeichnis an, existiert das ja auf dem backupmedium und wird gesichert - logisch, widerspricht aber dem 1. punkt.

    Wozu eigentlich diese Prüfung? Ob die Platte da ist wird ja vorher schon geprüft.

    Grüße und Danke

    Matthias
     
Thema: rsync - allg. 'beste' Einstellungen + backup-dir
Besucher kamen mit folgenden Suchen
  1. rsync backup-dir

    ,
  2. linux rsync option -backup-dir

    ,
  3. rsync with backup-dir

    ,
  4. rsync mit delete und backup-dir,
  5. linux backup_dir,
  6. rsync ordner ausnehmen
Die Seite wird geladen...

rsync - allg. 'beste' Einstellungen + backup-dir - Ähnliche Themen

  1. Datensicherung einses dedizierten Servers via rsync mit und ohne Linux

    Datensicherung einses dedizierten Servers via rsync mit und ohne Linux: Hallo, ich möchte meinen dedizierten Server übers Internet sichern (teilweise, d. h. Konfigurationsdateien von verschiedenen Diensten, sowie...
  2. rsync: Problem - Verzeichnisse mit Suffix umbenennen - nach 2.6.9

    rsync: Problem - Verzeichnisse mit Suffix umbenennen - nach 2.6.9: Hallo unixboard-Mitglieder, Mit rsync version 2.6.9 hat es noch funktioniert: root/lmarkus$ rsync --version...
  3. Linux Server mittels rsync auf Windows Rechner ?

    Linux Server mittels rsync auf Windows Rechner ?: Hallo, ich würde gerne meinen LinuxServer mit einem script ausstatten welches in einem Zeitinterwall nach dem Windows Rechner sieht und wenn er...
  4. RSYNC - Excludes anhand der Dateigröße ?

    RSYNC - Excludes anhand der Dateigröße ?: Hallo Gemeinde, ist es mit Bordmitteln möglich Dateien auch anhand Ihrer Größe auszuschließen? Plan B wäre einfach und mit einem Umweg zu...
  5. rsync via ssh per http-Aufruf starten

    rsync via ssh per http-Aufruf starten: Hallo, ich habe einen lokalen Benutzer der via rsync und ssh Dateien und Ordner auf einen Remote-Server speichert. Der Benutzer authenfiziert...