Backup mit Hardlinks

pchris

Well-Known Member
Ich habe hier eine Reihe an Backups auf der Festplatte herumliegen. Diese sind über einen Zeitraum von sechs Jahren entstanden, wobei ich mit rsync gearbeitet habe. Dabei habe ich von rsync immer Hardlinks anlegen lassen, damit nur die geänderten Dateien übertragen werden mussten, die Datenbestände aber für jeden Zeitpunkt komplett waren (ich würde auch Snapshots dazu sagen).

Aus Platzgründen möchte ich diese nun auf einen günstigen Onlinespeicher verschieben. Nun würde ich gerne alle Ordner komplett in ein Archiv stecken, verschlüsseln und dann hochladen. Welches Werkzeug würdet ihr empfehlen, damit die Hardlinks bestehen bleiben? Und gleiche Dateien nicht mehrfach Platz im Archiv verbrauchen, weil der Packer keine Hardlinks kennt.
 
Habe gerade herumgespielt und bemerkt, dass tar selbst mit Hardlinks umgehen kann:
Code:
christoph@sonne:~ % ll testordner/2008
total 16553
-rw-r--r--  1 christoph  christoph     28672 14 Okt. 10:35 AAA
-rw-r--r--  2 christoph  christoph  16805808 14 Okt. 10:35 BBB
christoph@sonne:~ % ll testordner/2010
total 16621
-rw-r--r--  2 christoph  christoph  16805808 14 Okt. 10:35 BBB222
-rw-r--r--  1 christoph  christoph     97561 14 Okt. 10:36 CCC
christoph@sonne:~ % tar -c -f /tmp/test.tar testordner
christoph@sonne:~ % tar -t -v -f /tmp/test.tar
drwxrwxr-x  0 christoph christoph   0 14 Okt. 10:35 testordner/
drwxrwxr-x  0 christoph christoph   0 14 Okt. 10:47 testordner/2010/
drwxrwxr-x  0 christoph christoph   0 14 Okt. 10:46 testordner/2008/
-rw-r--r--  0 christoph christoph 16805808 14 Okt. 10:35 testordner/2008/BBB
-rw-r--r--  0 christoph christoph    28672 14 Okt. 10:35 testordner/2008/AAA
-rw-r--r--  0 christoph christoph    97561 14 Okt. 10:36 testordner/2010/CCC
hrw-r--r--  0 christoph christoph        0 14 Okt. 10:35 testordner/2010/BBB222 link to testordner/2008/BBB
 
Ich verstehe nicht, wie du das mit den Hardlinks machst, bin daran aber interessiert. Das scheint mir auch für mich vielleicht brauchbar (ich weiß nicht, ob das auf NTFS funktionieren wird). Bisher mache ich immer einen kompletten Backup eines Systems. Ich hätte aber vielleicht gerne so etwas, wie inkrementelle Backups, die ich nach Bedarf zurückrollen kann. Also, eben vielleicht mal auch einen älteren Zustand reaktivieren.
Ob ich das wirklich möchte, weiß ich noch nicht, weil sich sehr viele Dateien ändern können und auch verschwinden. Dann würde ich mir mit älteren Ständen evtl den Platz zu hageln.
Aber bevor ich überhaupt entscheiden kann, müsste ich erst vielleicht mal verstehen, wie du das mit den Hardlinks machst.
Ist das ein Script? Ich weiß, dass ich mit rsync Links erstellen kann, aber kann rsync das selbst entscheiden? Also, ob es nun einen Link erstellt oder das Delta zu einer Datei überträgt?

Würde mich über eine Erklärung freuen.
 
Auszug aus
Code:
man rsync
--link-dest=DIR
This option behaves like --copy-dest, but unchanged files are
hard linked from DIR to the destination directory. The files
must be identical in all preserved attributes (e.g. permissions,
possibly ownership) in order for the files to be linked
together. An example:
rsync -av --link-dest=$PWD/prior_dir host:src_dir/ new_dir/


If file’s aren’t linking, double-check their attributes. Also
check if some attributes are getting forced outside of rsync’s
control, such a mount option that squishes root to a single
user, or mounts a removable drive with generic ownership (such
as OS X’s "Ignore ownership on this volume" option).

Beginning in version 2.6.4, multiple --link-dest directories may
be provided, which will cause rsync to search the list in the
order specified for an exact match. If a match is found that
differs only in attributes, a local copy is made and the
attributes updated. If a match is not found, a basis file from
one of the DIRs will be selected to try to speed up the
transfer.

This option works best when copying into an empty destination
hierarchy, as existing files may get their attributes tweaked,
and that can affect alternate destination files via hard-links.
Also, itemizing of changes can get a bit muddled. Note that
prior to version 3.1.0, an alternate-directory exact match would
never be found (nor linked into the destination) when a
destination file already exists.

Note that if you combine this option with --ignore-times, rsync
will not link any files together because it only links identical
files together as a substitute for transferring the file, never
as an additional check after the file is updated.

If DIR is a relative path, it is relative to the destination
directory. See also --compare-dest and --copy-dest.

Note that rsync versions prior to 2.6.1 had a bug that could
prevent --link-dest from working properly for a non-super-user
when -o was specified (or implied by -a). You can work-around
this bug by avoiding the -o option when sending to an old rsync.

Einfach mal ausprobieren.
Ich mache meine Backups auch schon seit einigen Jahren mit dieser Methode.
Zusätzlich werden unwiederbringliche Daten natürlich noch auf externen Datenträgern gesichert.
 
vielen Dank.
Auf Anhieb hätte ich gerne gesagt: "in meiner man steht das aber nicht"
Tatsächlich bin ich sie mehrfach durchgescrollt und obwohl ich genau nach dieser Option suchte, nicht fündig geworden, bzw fand ich nur den einen Satz
--link-dest=DIR hardlink to files in DIR when unchanged
und das brachte mich nicht auf eine Spur.
Muss wohl meine Lesegewohnheiten ändern. Nochmal Dank.
 
Dabei habe ich von rsync immer Hardlinks anlegen lassen, damit nur die geänderten Dateien übertragen werden mussten, die Datenbestände aber für jeden Zeitpunkt komplett waren
Ich bin mir nicht sicher, ob dazu die Option --link-dest=<DIR> gedacht ist. Rsync überträgt nämlich per default nur die geänderten Dateien, das ist eine Basisfunktionalität.
Mit --link-dest=<DIR> kann man Dateien aus Drittverzeichnissen auf der Zielseite heraus verlinken, wenn diese der Sendeseite entsprechen.

Rob
 
Hi. Ich benutze vom Verfahren her etwas ähnliches, allerdings mit zwei Phasen.

Zuerst synce ich mit rsync die Daten vom zu sichernden System in den Backupserver.
Verzeichnis ist /bck/server1/backup.act

Dann wird mit cp /bck/server1/backup.act in /back/server1/backup.20171019 kopiert. Aber mit den cp Parametern -al.
So ist in backup.act immer der derzeitige Stand wie auf dem Quellsystem benutzbar und in den Verzeichnissen mit dem Datumsstempel der "Snapshot" mit wenig Platzbedarf aber auch mit allen Strukturen, Besitzer, Rechten, etc..
Auf diese Weise ist auch die rsync Version und Parametriesierung egal, da meines Wissens alle cp Varianten Hardlinks erzeugen können.

@TE: Als einfachstes Tools, welches mit Hardlinks umgehen kann, fällt mir auch erst einmal tar ein.

Grüße
Mario
 
Zurück
Oben