Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Größe von Hardlinks bei rsync Backup

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
andisk
Newbie
Newbie
Beiträge: 3
Registriert: 10. Dez 2008, 13:13

Größe von Hardlinks bei rsync Backup

Beitrag von andisk » 10. Dez 2008, 13:36

Hallo zusammen,
ich habe auf dem Server in unserer Firma ein rotierendes rsync Backup eingerichtet.
Der Inhalt des Servers wird auf einer externen Platte im Ordner backup.0 gesichert.
Von diesem Backup wird täglich eine Hardlink-Kopie gemacht, die dann weiter rotiert bis sie gelöscht wird.
Das Problem war, dass auf der externen HD, die ca. 100GB größer ist als der Server, irgendwann kein Platz mehr war und das Backup somit nicht mehr funktioniert hat. Sprich: Die Hardlinks waren wahrscheinlich keine Hardlinks.

Ich habe einige Änderungen vorgenommen, die Platte neu formatiert (ext3) und das Backup nach folgendem Muster neu aufgesetzt:

#!/bin/sh
rm -rf /backup.3/
mv /backup.2/ /backup.3
mv /backup.1/ /backup.2
cp -al /backup.0/ /backup.1
rsync -a --delete /source/ /backup.0

In einem kleinen Testszenario funktioniert alles ohne Probleme. Die große Frage ist nun, ob die Dateien in den Verzeichnissen backup.1 bis backup.3 wirklich Hardlinks sind? Wie kann ich dies überprüfen? Bzw. wie kann ich die Größe eines Hardlinks feststellen? Es wird ja immer nur die Größe der verlinkten Datei angezeigt.


Vielen Dank schon mal und beste Grüße!

andisk

Werbung:
Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3159
Registriert: 25. Aug 2004, 02:13

Re: Größe von Hardlinks bei rsync Backup

Beitrag von robi » 10. Dez 2008, 14:22

Hardlinks als solche haben keine Größe. Sie sind einfach nur weitere Namen für ein und die selbe Datei. Nehmen diese Namen in einem Verzeichnis dann überhand, dann wird irgendwann einmal die Verzeichnisdatei ein Stück größer, damit die ganzen Namen dort hineinpassen. Aber damit allein bekommt man keine Platten voll.

Hardlinks erkennst du daran, dass bei normalen Dateien ( also nicht bei Verzeichnissen da ist es etwas anders) bei dem Befehl ls -l hinter den Zugriffsrechten die folgende Zahl nicht gleich 1 ist.
Die Zahl dort bedeutet die Anzahl von Dateinamen die zu dieser Datei gehören. Steht dort eine 1. dann hat diese Datei nur einen Namen, steht dort eine 8 dann hat diese Datei 8 Namen, und das sind 8 Hardlinks, denn es ist nicht mehr ersichtlich welche mal der ursprüngliche Dateiname war, alle Namen sind gleichberechtigt.

Hardlinks gehen aus diesem Grunde auch immer nur in ein und dem selben Dateisystem. Werden diese in getrennte Dateisysteme umkopiert, dann entstehen daraus jeweils eigenständige Dateien, die dann auch entsprechend auf jedem Filesystem Platz benötigen.

robi

andisk
Newbie
Newbie
Beiträge: 3
Registriert: 10. Dez 2008, 13:13

Re: Größe von Hardlinks bei rsync Backup

Beitrag von andisk » 10. Dez 2008, 14:46

Vielen Dank schon mal für die ausführliche Antwort!

Ich hab das jetzt bei meinem Test Backup mal durchgetestet und bin zu folgenden Ergebnissen gekommen:

Die Quelle hat die Dateien test1 und test2. Bei beiden steht hinter den Zugriffsrechten richtigerweise eine 1.

In den Verzeichnissen backup.0 bis backup.3 steht hinter den Rechten der zwei Dateien jeweils eine 4. Bei backup.0 verwundert mich das ein wenig, da die Dateien hier ja keine Hardlinks sein sollten, sondern eins zu eins Kopien der Dateien in der Quelle.
Müsste es nicht so sein: bei backup.0 eine 1 hinter den Zugriffsrechten und bei backup.1 bis backup.3 eine 3?

Wenn die Quelle abraucht bringt mir ein Hardlink, der auf eine Datei in der Quelle verweist ja herzlich wenig. Oder hab ich da immer noch was nicht ganz verstanden?

Danke und Gruß,
andisk

Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3159
Registriert: 25. Aug 2004, 02:13

Re: Größe von Hardlinks bei rsync Backup

Beitrag von robi » 10. Dez 2008, 15:08

andisk hat geschrieben:Wenn die Quelle abraucht bringt mir ein Hardlink, der auf eine Datei in der Quelle verweist ja herzlich wenig. Oder hab ich da immer noch was nicht ganz verstanden?
Bei Hardlinks gibt es keine Quelle, erst wenn der letzte Hardlink (oder Dateiname) der zu dieser Datei gehört gelöscht wird, wird die Datei gelöscht. Du kannst zB auch Hardlinks keine unterschiedlichen Rechte oder Zeitstempel geben, da diese alle in der Dateidaten (inode) gespeichert sind und die sind eben nur ein einziges mal vorhanden, auch wenn es verschiedene Dateinamen in verschiedenen Verzeichnissen dafür gibt.

Wenn du die Datei einmal mit eins und einmal mit 4 siehst, dann sind das 2 Dateien in unterschiedlichen Verzeichnissen. Einmal mit 4 Hardlinks und einmal nur eine Datei mit nur einem Namen. Hardlinks gehen nicht über Verzeichnisgrenzen hinweg. Jeder Hardlink hat genau die selbe Zahl an Dateinamen die du mit ls -l siehst. Wenn also ein neuer Hardlink zu eine Datei hinzukommt, dann wird diese Zahl bei allen anderen Dateinamen auch automatisch um eins größer.

Wenn du mit deinem rsync Hardlinks erzeugst, dann wird das wahrscheinlich so sein, das du die selbe Datei schon in verschiedenen Sicherungen gesichert hast. (so sollte es jedenfalls sein wenn es richtig ist) Die Datei ist dann nur einmal physikalisch als wirkliche Daten vorhanden hat aber in jeder Sicherung einen Dateinamen der auf diese Daten verweist.
Würdest du die Orginaldatei ändern, dann würde bei der nächsten Sicherung nicht wieder ein Hardlink gemacht, sondern die Datei dann als neue Datei in die Sicherung kopiert. Der Dateiinhalt ist ja jetzt ein anderer als in den früheren Sicherungen, also muss auch eine neue Datei angelegt werden. Die alten Sicherungen greifen über ihre Hardlinks solange auf die alten Datei zurück bis auch der letzte dieser alten Dateinamen in der Sicherung gelöscht worden ist. In der neuen Sicherung wird aber immer auf die neuen Daten also die neue Datei zugegriffen.

Andern sich Dateien nicht werden also nur weitere Hardlinks angelegt, ändern sich die Dateien werden jedesmal neue Dateien angelegt.

robi

Luzandro
Newbie
Newbie
Beiträge: 4
Registriert: 4. Dez 2008, 12:34

Re: Größe von Hardlinks bei rsync Backup

Beitrag von Luzandro » 10. Dez 2008, 15:50

andisk hat geschrieben:Wenn die Quelle abraucht bringt mir ein Hardlink, der auf eine Datei in der Quelle verweist ja herzlich wenig. Oder hab ich da immer noch was nicht ganz verstanden?
Hardlinks funktionieren nur innerhalb einer Partition, also wenn das Backup auf der gleichen Platte liegt wäre das sowieso schon mal suboptimal, allerdings gibts bei dir eh keine Links auf die Quelle.
In den Verzeichnissen backup.0 bis backup.3 steht hinter den Rechten der zwei Dateien jeweils eine 4. Bei backup.0 verwundert mich das ein wenig, da die Dateien hier ja keine Hardlinks sein sollten, sondern eins zu eins Kopien der Dateien in der Quelle.
Müsste es nicht so sein: bei backup.0 eine 1 hinter den Zugriffsrechten und bei backup.1 bis backup.3 eine 3?
Nur wenn sich die Datei geändert hat. Der Hardlink auf die 0er-Dateien ist ja der einzige, den du explizit anlegst:

Code: Alles auswählen

cp -al /backup.0/ /backup.1
Wichtig dabei ist nur, dass rsync bei einer Änderung eine NEUE Datei anlegt und nicht die vorhandene ändert (das könntest du ihm mit --inplace auch sagen), da sonst natürlich die Änderung alle Links betreffen würde

andisk
Newbie
Newbie
Beiträge: 3
Registriert: 10. Dez 2008, 13:13

Re: Größe von Hardlinks bei rsync Backup

Beitrag von andisk » 10. Dez 2008, 16:05

@ robi: Vielen Dank, es wurde einiges klarer, wenn auch nicht alles!

@ Luzandro:
Luzandro hat geschrieben: Hardlinks funktionieren nur innerhalb einer Partition, also wenn das Backup auf der gleichen Platte liegt wäre das sowieso schon mal suboptimal, allerdings gibts bei dir eh keine Links auf die Quelle.
Keine Sorge, das ist nur beim Testszenario auf der selben Platte. Für das richtige Backup verwende ich eine externe HD.

Summa summarum kann man dann also sagen, dass das Backup, so wie ich es eingerichtet habe, richtig ist?

Danke euch!
Grüße andisk

ixo
Newbie
Newbie
Beiträge: 11
Registriert: 27. Jul 2008, 08:54

Re: Größe von Hardlinks bei rsync Backup

Beitrag von ixo » 25. Dez 2008, 15:08

Hallo andisk,

versuch 'mal storebackup (http://savannah.gnu.org/projects/storebackup, die Version in Suse ist veraltet + hier gibt's auch umfängliche Doku), dann benötigst Du wesentliche weniger Plattenplatz, da u.a. Umbenennungen von Dateien erkannt und die Dateien komprimiert werden können.
StoreBackup erlaubt auch die Zurücksicherung der Dateien mit einem Skript, das alle Rechte, Owner und Hard Links im Original wieder setzt. Mit rsync geht das prinzipbedingt nicht vollständig.
Außerdem löscht storeBackup die alten Sicherungen nach flexible vorgebbaren Regeln.

Gruß, ixo

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste