rsync Script sichert Dateien doppelt [GELÖST]

Daniel-ThinkPad

New member
Themenstarter
Registriert
25 Mai 2009
Beiträge
4.434
Hallo Leute,

ich möchte von meinem HTPC Daten sichern. OS ist Ubuntu 10.04. Einfacherhalber wollte Ich das hier im WIKI vorgestellte Script verwenden:

http://wiki.ubuntuusers.de/skripte/Backup_mit_RSYNC

Alles soweit erfolgreich eingestellt und dann gestern Nacht durchlaufen lassen. Die kompletten Daten waren dann auch am nächsten Morgen auf der externen Platte zu finden.
Jetzt wollte Ich testen ob rsync auch wirklich seinen Dienst erfüllt und mir für den heutigen Tag einen Ordner anlegt der nur "Hardlinks" enthält da vom Quellverzeichnis keine Dateien dazugekommen oder geändert wurden.

Er erstellt zwar einen Ordner vom heutigen Datum aber es werden aber alle Dateien nochmals kopiert??
Normalerweise sollte er doch nur überprüfen ob Dateien dazugekommen und dann auch nur diese rüberkopieren.


Vielleicht Leute hier die das selbe Script zur Datensicherung benutzen?

Das Script liegt wie im Artikel oben beschrieben in "/root/backup.sh"
 
Hast du geschaut, dass der link-dest-Parameter auch auf das richtige Verzeichnis mit der ersten Sicherung zeigt?
 
Wo genau finde Ich denn den link-dest Parameter? Hab Ihn beim durchstöbern des Scriptes auf die Schnelle nicht gefunden.

In der Log-Datei bin Ich fündig geworden. Auf den ersten Blick sieht der Parameter okay aus. Hier mal ein paar Infos:

Script:
Code:
#!/bin/bash
# Simple backup with rsync

# sources and target MUST end WITH slash
SOURCES="/media/raid5/"
TARGET="/media/F/"

# mountpoint must end WITHOUT slash
MOUNTPOINT="/media/F"

LOGFILE="/root/backup.log"
EXPIREDAYS=0
RSYNC="--delete"

Logfile:
So 24. Okt 12:46:33 CEST 2010
/usr/bin/rsync -e "" -av /media/raid5/ --delete --link-dest=/media/F/101023/media/raid5/ /media/F/101024/media/raid5/

Jetzt habe Ich aber gerade folgendes entdeckt, und zwar im Logfile von der gestrigen Erstsicherung:
Code:
/bin/ls: Zugriff auf /media/F/[[:digit:]]* nicht möglich: No such file or directory
/usr/bin/rsync -e "" -av /media/raid5/ --delete  /media/F/101023/media/raid5/

Da stimmt doch was nicht.
 
Hm, meine Suchfunktion hat das aber auf Anhieb gefunden.

Zeile 47. Mach mal folgendes, füge hinter der Zeile:
Code:
LASTBACKUP=$(/bin/ls -d $TARGET[[:digit:]]* 2>> $LOGFILE | /usr/bin/sort -r | /usr/bin/head -1)
ein
Code:
echo "Reusing files from $LASTBACKUP"
ein.

Dann sollte das entsprechend auf der Konsole ausgegeben werden und du kannst gucken, ob das korrekte Verzeichnis genommen wird.
 
Ah die Zeile sieht bei mir so aus:

Code:
if [ "$LASTBACKUP" ]; then
      INC="--link-dest=$LASTBACKUP$SOURCE"
 
Richtig, und an einer anderen Stelle, beschrieben durch das erste Code-Zitat dann was modifizieren.
 
Soll das dann so aussehen?

Code:
LASTBACKUP=$(/bin/ls -d $/media/raid5[[:digit:]]* 2>> $LOGFILE | /usr/bin/sort -r | /usr/bin/head -1) echo "Reusing files from $LASTBACKUP"

Code:
Bzw so:

INC="--link-dest=$LASTBACKUP="$(/bin/ls -d $/media/raid5[[:digit:]]* 2>> $LOGFILE | /usr/bin/sort -r | /usr/bin/head -1) echo "Reusing files from $LASTBACKUP"
 
Ne, eher so:

Code:
  if [ -e $TARGET ]; then
    LASTBACKUP=$(/bin/ls -d $TARGET[[:digit:]]* 2>> $LOGFILE | /usr/bin/sort -r | /usr/bin/head -1)
    echo "Reusing files from $LASTBACKUP"
  fi
Mehrere Befehle in einer Zeile geht vermutlich mit Semikolon getrennt, da bin ich mir aber nicht sicher.

Edit Man, nachträglich in vorherige Posts reineditieren ist unfair :S. Da steht ja auch schon das Problem in dem Logfile. Bist du sicher, dass es den Pfad /media/F gibt? Was spuckt denn
Code:
ls -l /media/F/*
aus?
 
Okay aber die Wörter "$TARGET" werden nicht durch den Zielpfad ersetzt, richtig?

Bitte schön:
Code:
daniel@ubuntu:~$ ls -l /media/F/*
insgesamt 7048
-rwxrwxrwx 1 daniel users 7215404 2010-10-24 04:54 backup-045432.log
drwx------ 1 daniel users       0 2010-10-23 19:47 media

PS: Gratulation zum 1000. Post ;)
 
Das Script sucht unter /media/F/ nach einem Ordnernamen, der aus lauter Zahlen besteht, findet aber keinen. Für jeden Sicherungszeitpunkt wird ein Ordner mit dem Datum als Namen erstellt. Anscheinend ist da gestern was schief gegangen.

Was passiert denn, wenn du den Inhalt des Ordners /media/F/ in einen Ordner /media/F/101024 verschiebst und es dann nochmal probierst?

rdiff-backup wäre evtl. in der Tat eine Lösung. Ich habe mir mein rsync-Skript selbst geschrieben und inzwischen läuft's auch ohne Probleme. Das muss aber nicht das allein selig machende Mittel sein :)
 
Benutzt du das selber?

Wird da für jede Sicherung ein Verzeichnis auf dem Zielmedium angelegt?

Das Script sucht unter /media/F/ nach einem Ordnernamen, der aus lauter Zahlen besteht, findet aber keinen. Für jeden Sicherungszeitpunkt wird ein Ordner mit dem Datum als Namen erstellt. Anscheinend ist da gestern was schief gegangen.

Aber genau der ist ja vorhanden: /media/F/101023
 
Daniel-ThinkPad' schrieb:
Benutzt du das selber?
Ja, täglich.

Daniel-ThinkPad' schrieb:
Wird da für jede Sicherung ein Verzeichnis auf dem Zielmedium angelegt?
Nein, das Zielverzeichnis enthält die letzte Sicherung wie bei rsync und die komprimierten Diffs der vorherigen Generationen unterhalb ./rdiff-backup-data. Es gibt ein Kommandozeilentool um an die älteren Generationen ranzukommen. Zieh dir am besten erstmal die Doku rein.
 
Also für mich stehen jetzt folgende Varianten zur Auswahl:

1. Einfacher rsync-Befehl:
Code:
sudo rsync -av --delete /media/raid5/* /media/F

2. rsync-Script

3. rdiff-Backup

Das Backup wird in unregelmäßigen Abständen von Hand angeworfen. Von daher braucht es schon mal keine automatische Backpfunktion.
 
Daniel-ThinkPad' schrieb:
Aber genau der ist ja vorhanden: /media/F/101023
Ah ok, der Auschnitt aus der Ausgabe vom ls-Befehl war der Inhalt von dem Datumsverzeichnis...

Hm, da bin ich momentan aber auch gerade mit einem Latein am Ende.
 
Da du ja selber ein rsync Script benutzt:

Wie verhält sich das denn mit den Hardlinks wenn Ich das Zielmedium (1TB externe USB Platte) an einen Windows Rechner hänge. Kann Ich dann einfach in den Ordner mit der letzten Sicherung gehen und komplett alle Daten kopieren? Oder kopiere Ich dann nur diese sogenannten Hardlinks (ausgeschlossen natürlich Daten sie seit der vorletzten Sicherung dazugekommen sind) mit denen Ich unter Windows nichts anfangen kann? Wie muss Ich mir das vorstellen?
 
Welches Dateisystem verwendest du denn?

Aber das Prinzip schaut so aus, dass du einfach den letzten Sicherungsordner nimmst und den Inhalt wieder raus kopierst. Jeder Sicherungsordner ist vollständig. Die Dateien werden halt nur nicht jedesmal kopiert.
Hardlinks musst du dir übrigens nicht wie normale Verknüpfungen unter Windows vorstellen. Stelle dir den Inhalt der Datei und den Pfad dazu getrennt vor. Der Inhalt wird einmal gespeichert. Erreichbar ist die Datei dann unter /pfad/pfad1, /pfad/pfad2 ... D.h. auch wenn du die Datei zuerst als /pfad/pfad1 anlegst, einen Hardlink mit /pfad/pfad2 erstellst, dann die Datei /pfad/pfad1 löschst, ist die Datei immer noch unter /pfad/pfad2 erreichbar. Erst, wenn der letzte Hardlink entfernt wird, wird auch der Dateiinhalt gelöscht (bzw. ist dann nicht mehr erreichbar, weil kein Pfad mehr darauf zeigt).

http://de.wikipedia.org/wiki/Hard_link#Unix

Ein Softlink entspricht dagegen mehr einer Verknüpfung.
 
Was mit gerade auffällt: welches Filesystem hat denn deine externe Platte? rsync oder rdiff-backup werden mit FAT (kann weder Hard- noch Softlinks!) nämlich nicht glücklich werden, es muß schon ein Linux-Filesystem sein.

EDITH meint, da war jemand schneller ... :D :D
 
Muss Ich bei meinem Windows Vista Laptop denn noch irgendwelche Zusatzsoftware installieren damit die Hardlinks richtig "erkannt" werden?

Die externe Platte ist im NTFS Format formatiert.
 
Ne, Vista kann das schon richtig mit den Hardlinks.

Ich frage mich nur, ob Linux das auch kann... Also Hardlinks korrekt auf NTFS anlegen. Alles was nicht so mainstream und damit gründlich durchgetestet ist, ist halt so eine Sache bei nachprogrammierten unbekannten Spezifikationen.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben