Zunächst sollten Sie sich ein wenig über die Include / Exclude-Syntax von rsync informieren. Ich habe das Gefühl, dass das, was Sie tun möchten, besser mit **
Globs als mit *
Globs gemacht werden kann. ( **
Erweitert sich auf eine beliebige Anzahl von Einträgen, während *
sich nur auf einen einzelnen Eintrag erweitert, der möglicherweise mit mehreren Verzeichniseinträgen übereinstimmt . Die Details finden Sie man rsync
unter Einschließen / Ausschließen von Musterregeln .)
Wenn Sie jedoch in der Lage sein möchten, das System mit einem Minimum an Aufwand aus der Sicherung in einen bekannten Betriebszustand zurückzusetzen, sollten Sie vorsichtig sein, wenn Sie Dateien oder Verzeichnisse ausschließen. Ich benutze rsnapshot selbst und habe tatsächlich den umgekehrten Ansatz gewählt: alles einschließen, außer ein paar sorgfältig ausgewählten Verzeichnissen.
In meiner rsnapshot.conf heißt es also tatsächlich (mit Registerkarten, die den Parser der Konfigurationsdatei von rsnapshot glücklich machen):
interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./
und sonst sehr wenig. Ja, es bedeutet, dass ich möglicherweise etwas mehr kopiere, als unbedingt erforderlich ist, aber es stellt sicher, dass alles kopiert wird, was nicht als ephermal gedacht ist. Aufgrund von rsnapshot, das das Hardlink-to-Deduplicate-Verhalten von rsync verwendet, sind die einzigen tatsächlichen Kosten hierfür beim ersten Durchlauf. Vorausgesetzt, Sie haben einen Sicherungszielspeicherort mit angemessener Größe (im Vergleich zu Ihrer Gesamtdatensatzgröße), wird danach weder Zeit noch Speicherplatz benötigt. Ich schließe den Inhalt von / backup aus, da ich dort das Backup-Zieldateisystem einbinde. Wenn Sie dies nicht ausschließen, wird das Backup in sich selbst kopiert. Der Einfachheit halber möchte ich jedoch den Montagepunkt beibehalten, wenn ich jemals auf blankem Metall wiederherstellen muss!
In meinem Fall kann ich auch nicht vernünftig verwenden one_fs 1
; Ich führe ZFS mit derzeit ~ 40 Dateisystemen aus. Das explizite Auflisten all dieser Elemente wäre ein Alptraum für die Wartung und würde die Arbeit mit ZFS-Dateisystemen viel komplizierter machen, als es sein muss.
So ziemlich alles, was Sie darüber hinaus ausschließen möchten, hängt sowieso von der Verteilung ab, sodass es praktisch unmöglich ist, eine generische Antwort zu geben. Das heißt, Sie werden wahrscheinlich einige Kandidaten unter / var finden.
exclude /somepath/*
ist in diesem Fall vollkommen in Ordnung; es schließt alles aus/somepath/
, genau wie erwartet. Sie brauchen nicht,**
weil Sie nicht tiefer schauen müssen, wenn bereits alles/somepath/
ausgeschlossen ist.