Hallo Forum,
um bei meiner Datensicherung gezielter die wichtigen Teile von den weniger Wichtigen zu trennen, versuche ich beim rsync mit den Optionen include-from und exclude-from zu arbeiten. Mit diesem Beitrag möchte ich zum Einen anderen Benutzern meine bisherigen Erfahrungen weitergeben, zum Anderen erhoffe ich mir von erfahreneren Benutzern Verbesserungsvorschläge, da ich teilweise durch Versuch und Irrtum soweit kam.
Mein Grundwissen habe ich aus dem Wiki-Beitrag: https://wiki.ubuntuusers.de/rsync/ Zum Testen habe ich ein überschaubares Verzeichnis ausgewählt im Home-Verzeichnis meines Benutzers: /home/user/Dokumente/abc/Testverzeichnis
Ich begann also mit dem Befehl und nur dem exclude-from:
rsync -naHSv --delete --delete-before --progress --stats --exclude-from=/home/datensicherung/include_exclude/datensicherung-ex /home/user/Dokumente/abc/Testverzeichnis /media/user/Dasi1/Datensicherung
und der exclude-from-Datei:
- Ausgeschlossen
Ich lasse immer eine Leerzeile am Ende (zeigt er hier leider nicht an). Soweit klappt es.
Dann habe ich schrittweise das Quellverzeichnis /home/user/Dokumente/abc/Testverzeichnis um jeweils eine Ebene gekürzt, da ich ja am Ende /home sichern möchte:
rsync -naHSv --delete --delete-before --progress --stats --exclude-from=/home/datensicherung/include_exclude/datensicherung-ex /home /media/user/Dasi1/Datensicherung
Zum Testen und zum Lernen, wie ich etwas ausschließen muss, soll zunächst nur das Testverzeichnis gesichert werden. Dazu muss man nun die exclude-from Datei erweitern:
- user/Dokumente + user/Dokumente/abc/Testverzeichnis - user/Dokumente/abc/Testverzeichnis/Ausgeschlossen - user/Downloads - user/Mail - user/Musik - user/Öffentlich - user/Schreibtisch - user/Videos - user/Vorlagen - lost+found - user2 ** falls es noch weitere User-Verzeichnisse gibt - .*
So wird vom user das Verzeichnis Testverzeichnis, außer dem Unterverzeichnis Ausgeschlossen gesichert. Mit dem ".*" werden versteckte Verzeichnisse ausgeschlossen.
Jetzt die umgekehrte Variante mit include-from:
rsync -naHSv --delete --delete-before --progress --stats --include-from=/home/datensicherung/include_exclude/datensicherung-in /home/user/Dokumente/abc/Testverzeichnis /media/user/Dasi1/Datensicherung
Hier hatte ich zunächst das Problem, dass immer 0 Dateien gesichert wurden. Erst mit folgender include-from-Datei klappte es:
+ Testverzeichnis/ + Testverzeichnis/* + Testverzeichnis/*** - Testverzeichnis/Ausgeschlossen/ - Testverzeichnis/Ausgeschlossen/* - Testverzeichnis/Ausgeschlossen/*** - .*
Der große Unterschied, worauf ich erst per Zufall gestoßen bin ist, dass im Gegensatz zum exclude-from beim include-from das "Testverzeichnis" sowohl im Befehl, als auch in include-from angegeben sein muss. Zudem noch in dreifacher Weise, einmal ohne, einmal mit einem Stern und einmal mit drei Sternen für die Unterverzeichnisse. Allerdings hatte dort die Angabe von
- Testverzeichnis/Ausgeschlossen/ - Testverzeichnis/Ausgeschlossen/* - Testverzeichnis/Ausgeschlossen/*** - .*
keine Wirkung.
Analog dann die Angaben, wenn /home im Befehl das Quellverzeichnis ist:
rsync -naHSv --delete --delete-before --progress --stats --include-from=/home/datensicherung/include_exclude/datensicherung-in /home /media/user/Dasi1/Datensicherung
Und die include-from-Datei:
+ /home/ + /home/user/ + /home/user/Dokumente/ + /home/user/Dokumente/abc/ + /home/user/Dokumente/abc/Testverzeichnis/ + /home/user/Dokumente/abc/Testverzeichnis/* + /home/user/Dokumente/abc/Testverzeichnis/*** - /home/user/Dokumente/abc/Testverzeichnis/Ausgeschlossen/ - /home/user/Dokumente/abc/Testverzeichnis/Ausgeschlossen/* - /home/user/Dokumente/abc/Testverzeichnis/Ausgeschlossen/*** - .*
Wichtig ist bei der include-from-Datei, dass jede Ebene /home, /home/user, /home/user/abc/ angegeben ist, auch wenn nur Unterverzeichnisse gesichert werden sollen. Fehlt nur eine Ebene, z.B. /home, dann werden 0 Dateien gesichert.
Im nächsten Schritt habe ich es dann mit beiden gleichzeitig probiert:
rsync -naHSv --delete --delete-before --progress --stats --include-from=/home/datensicherung/include_exclude/datensicherung-in --exclude-from=/home/datensicherung/include_exclude/datensicherung-ex /home/user/Dokumente/abc/Testverzeichnis /media/user/Dasi1/Datensicherung
Mit der include-from-Datei:
+ Testverzeichnis/ + Testverzeichnis/* + Testverzeichnis/***
Und der exclude-from-Datei:
- Ausgeschlossen
Die Sicherung klappt, aber das ausschließen vom Verzeichnis "Ausgeschlossen" klappt nicht.
Nach meinen bisherigen Erfahrungen arbeitet man also entweder mit einer Positivliste (include-from) mit allen Verzeichnissen, welche eingeschlossen werden sollen, oder mit einer Negativliste (exclude-from) mit allen Verzeichnissen, welche ausgeschlossen werden sollen.
Dabei ist die Erstellung der include-from-Datei aufwändiger, da man Verzeichnisse, die man mit Unterverzeichnissen einschließen möchte, in drei Zeilen angeben muss (einmal ohne Stern, einmal mit einem und einmal mit drei Sternen), plus übergeordneten Verzeichnissen, auch wenn diese nicht gesichert werden. Zudem klappt bei mit der Ausschluss von Dateien in der include-from-Datei nicht.
Das ist vielleicht der Grund, weshalb man viel öfter etwas über die exclude-from-Variante lesen kann, aber kaum etwas über die include-from-Variante.
Man kann auch in der exclude-from Datei wieder Verzeichnisse einschließen, was am Ende vom Abschnitt "Verzeichnisse von der Sicherung ausschließen" vom Wiki-Beitrag erklärt ist.
Benutzt man beide gleichzeitig, scheint die exclude-from-Datei keine Rolle zu spielen, sondern nur die include-from. Vermutlich beherrsche ich nur die Konfiguration noch nicht richtig.
Es würde mich freuen, von Euren Erfahrungen zu lesen und wie ich noch besser mit den include- und exclude-from-Dateien umgehen kann.
Viele Grüße