rsync löscht ausgeschlossenes Verzeichnis – warum?

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 06.04.2019 18:25:31

Ich versuche hier ein rsync Kommando so zu bauen, dass es eine bestimmte Liste an Verzeichnissen zwar ggf. (leer) anlegt, aber ihre Inhalte nicht überträgt. (Es sind mount-points. Deren Inhalte sollen nicht übertragen werden, die mount-points aber schon.) Es geht von einer lokalen Platte auf eine andere und soll gewissermaßen abgeglichen werden. Das Kommando sieht so aus:

Code: Alles auswählen

sudo rsync -aAXHW -xx --delete --modify-window=1 --progress $mount_point_original/ $mount_point_backup/ --exclude-from='/root/medien-backup-excludes.txt'
Das dazu gehörige

Code: Alles auswählen

/root/medien-backup-excludes.txt
sieht so aus:

Code: Alles auswählen

/benutzername/VirtualBox VMs/*
/benutzername/Gemeinsam/*
/benutzername/Videos/*
/benutzername/Backups/*
Das funktioniert auch fast. Die letzten drei Verzeichnisse sind im Ziel vorhanden, aber es werden keine Inhalte dort hin übertragen. Blöderweise ignoriert er die oberste Zeile nur so ein bisschen: Er löscht das Verzeichnis im Ziel einfach. Das ist jetzt kein wirkliches Problem, weil ja nichts übertragen werden soll. Aber ich frage mich einfach: Wieso? Was genau mache ich an der Stelle verkehrt? Das Verzeichnis hätte ich aus Konsistenzgründen einfach auch dort. Das einzige, worin sich das spezielle Verzeichnis erst mal zu unterscheiden scheint, ist das Leerzeichen. Aber nach allem, was ich gelesen habe, sollte das gerade in der exclude-from kein Problem sein. Man müsse nichts escapen. Warum schmeißt er das Verzeichnis dann trotzdem raus (--delete scheint darauf angewendet zu werden)? Jemand eine Idee?

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 19.04.2019 10:11:56

Stimmt was mit der Frage nicht, oder weiß einfach nur keiner zu helfen? Bin immer noch keinen Schritt weiter, warum er das spezielle Verzeichnis sonderbehandelt, im Vergleich zu den anderen.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 19.04.2019 10:25:14

Das liegt am Leerzeichen.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von novalix » 19.04.2019 10:54:54

debianoli hat geschrieben: ↑ zum Beitrag ↑
19.04.2019 10:25:14
Das liegt am Leerzeichen.
Das würde ich auch vermuten.
Probiere es mal so:

Code: Alles auswählen

/benutzername/VirtualBox\ VMs/*
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 23.04.2019 14:30:25

Danke für den Hinweis. Hab's gerade eben nochmal probiert und... naja, er löscht das Verzeichnis wieder, als wenn es an der Quelle gar nicht da wäre.

Sonst noch Ideen? Ich meine, es geht mit Backslash nicht, es geht nur mit leer nicht. Klar, ich kann's mal testweise so umbenennen, dass kein Leerzeichen drin ist, aber irgendwie... sollte das doch so nicht sein, oder?

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 23.04.2019 15:50:19

Doch, das ist oft so. Ein Leerzeichen in Dateinamen ist immer schlecht. Mach einen Unterstrich daraus und das wird laufen.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von novalix » 23.04.2019 19:26:05

Du könntest auch noch ausprobieren den gesamten Pfad-String (ohne den glob character) zu quotieren:

Code: Alles auswählen

"/benutzername/VirtualBox VMs/"*
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 24.04.2019 07:58:40

Seit ich mit Computern zu tun habe, vermeide ich Umlaute, Leerzeichen und Sonderzeichen in Dateinamen. Das macht nur Ärger und funktioniert bei vielen Systemen nicht.

Wenn dich interessiert, warum das so ist: https://de.wikipedia.org/wiki/Dateiname

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 24.04.2019 23:57:22

Der Knaller ist ja: Hab vorhin einfach mal alles auf »_« statt » « umgebaut, also Einträge in der fstab, in den backup-Skripten, der Ordner/Mount-Point selbst und auch in den entsprechenden Konfigurationsdateien von VirtualBox selbst, damit nur ja alles schön konsistent ist. Hat nichts genutzt. Ich kratze mich gerade etwas am Kopf, weil das Leerzeichen dann wirklich die letzte Besonderheit an und für sich war. Eben nochmal extra das entsprechende Verzeichnis auf der Zielplatte angelegt, weil er's beim ersten Durchgang nicht mit angelegt/kopiert hat. Jetzt hat er es wieder fröhlich weg gelöscht.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 25.04.2019 06:54:01

Rsync legt eine Index-Datei an. Du kannst die testweise umbenennen und dann neu starten. Vielleicht hakt da was.
Ansonsten findest du hier evtl Infos, die dir weiterhelfen: https://rsync.samba.org/how-rsync-works.html

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 25.04.2019 08:55:05

Jetzt muss ich fragen: Wie heißt die? Im verlinkten Dokument hab ich keinen Hinweis darauf gefunden (nur dass Indizes angelegt werden), Googlen war auch nicht so erfolgreich und die Manpages enthalten das Wort »index« auch nicht (zumindest nicht bei mir).

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 25.04.2019 09:37:59

7Saturn hat geschrieben: ↑ zum Beitrag ↑
25.04.2019 08:55:05
Im verlinkten Dokument hab ich keinen Hinweis darauf gefunden (nur dass Indizes angelegt werden)...
Gute Frage... aber wenn ich die Infos genauer durchlese, scannt rsync wohl vor jeder Übertragung die zu übertragenden Verzeichnisse und übergibt diese Liste an den Empfänger. Da beim Empfänger auch rsync läuft, wird dort das Zielverzeichnis auch gescannt. Dann werden nur die Dateien übertragen, die am Ziel nicht da sind bzw die gelöscht, die beim Ziel zuviel sind. Scheinbar gibt es dann doch keine Index-Datei.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 25.04.2019 09:46:49

Ich habe eben dein Setting nachgestellt und bei mir klappt die rsync-Übertragung ohne ein Löschen des Zielverzeichnisses. Teste das doch mal als echter Root, also ohne sudo und Root per su - mit der rsync-Option dry-run

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von habakug » 25.04.2019 12:16:31

Hallo,

ist denn die Option "-s" für rsync schon geprüft worden?
man rsync hat geschrieben: -s, --protect-args
This option sends all filenames and most options to the remote
rsync without allowing the remote shell to interpret them. This
means that spaces are not split in names, and any non-wildcard
special characters are not translated (such as ~, $, ;, &,
etc.). Wildcards are expanded on the remote host by rsync (in‐
stead of the shell doing it).
[...]
This option will eventually become a new
default setting at some as-yet-undetermined point in the future.
Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 27.04.2019 10:54:10

Ich habe eben einfach mal eure beiden Vorschläge zugleich versucht und folgendes (Ordnernamen sind sinngemäß) abgesetzt:

Code: Alles auswählen

rsync -saAXHW -xx --delete --modify-window=1 --progress /pfad_zum/original/ /pfad_zum/backup/ --exclude-from='/pfad_zu/backup-excludes.txt' --dry-run
Also mit -s, und das ganze auch direkt als root, nicht via sudo. Ergebnis war aber dasselbe. Das Verzeichnis VirtualBox_VMs würde er weg löschen, wenn ich nicht --dry-run übergeben hätte.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 27.04.2019 11:10:47

Dann Versuch es mal mit einem neuen, leeren Zielverzeichnis und --dry-run

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 28.04.2019 23:48:17

Habe ich gemacht. Mit einem für mich überraschenden Ergebnis: rsync zeigt die Anwesenheit des Verzeichnisses nicht mal in der Liste der zu synchronisierenden Verzeichnisse an. Wenn man so will, konsistent mit dem Löschverhalten. Ein Verzeichnis, das beim Original nicht existiert, wird im Ziel entfernt. Aber wieso? Gerade eben nochmal vergewissert, dass ich auch ja nicht irgendwie total daneben bin: Nein, das Verzeichnis existiert im Original sehr wohl, ist ja auch ein Mount-Point. (So wie die anderen ausgeschlossenen Verzeichnisse auch, auch da sollte es keinen Unterschied geben...) Nähere Untersuchung zeigt aber: Wenn das Verzeichnis nicht gerade etwas gemountetes beherbergt (in meinem Fall das Virtual-Box-Verzeichnis, das physikalisch auf einer SSD liegt, aber den Ordner auf der Festplatte gemountet wird), wird es mit angezeigt. Dann ist freilich nichts drin und rsync scheint im dry-run alles zu machen, was zu erwarten wäre.

Nochmal kurz zusammengefasst, was ich feststelle: Die anderen Verzeichnisse, bei denen das problemlos so geht, haben als Quelle für den jeweiligen bind-Mount eine Festplatte, die »abschnittsweise« nochmal in die Platte gemountet wird. Damit da keine Doppelungen auftreten, lasse ich die Inhalte der mount points weg. Das einzige Problemverzeichnis liegt auf der SSD und wird auf die Festplatte gemountet. Scheint der einzige Unterschied zu sein, dass hier physikalisch unterschiedliche Dateisysteme vorliegen. Aber ich verstehe nicht, wieso das mal ein Problem und mal keines ist. Hätte gedacht, für rsync ist das erst mal transparent, das muss über das physikalische Dateisystem darunter nichts wissen, um zu entscheiden, ob etwas einfach nur da ist. Zumindest habe ich jetzt eben beim nochmaligen Überprüfen der Parameter auch nicht festgestellt, dass diese Dateisystemgrenzen überschreiten verbieten würden.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 29.04.2019 06:13:12

Dann teste das Sichern des Verzeichnisses mit tar und der exclude-from Option von tar. Jeweils mit Inhalt gemountet / ungemountet.

Wenn tar dann auch rumzickt, hat es evtl etwas mit deiner Art des mountens zu tun.

Wenn du das System per rsync sicherst, sind dann die virtuellen Maschinen aus?
Und wie mountest du die Festplatten?
Irgendwas wie apparmor am laufen? Das macht manchmal auch nervige Dinge.

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 29.04.2019 09:45:50

Das mit tar verstehe ich noch nicht ganz. Man muss vielleicht dazu sagen, dass wir von einer Gesamtdatenmenge von ca. 8 TB sprechen, die aus genau dem Grund auch nur »inkrementell« (also per Abgleich) auf die andere Platte kopiert werden. Würde tar nicht versuchen, den ganzen Schwung rüber zu kopieren?

Ja, die VMs sind aus. Das mount passiert über fstab und sieht von den Einträgen her so aus:

Code: Alles auswählen

/mnt/nas/original/nas/Videos /home/user_a/nas/Videos         none bind,errors=continue,gid=1001,uid=1001 0 0
/mnt/nas/original/nas/Videos /home/user_b/nas/Videos         none bind,errors=continue,gid=1000,uid=1000 0 0
/home/user_b/VirtualBox_VMs  /home/user_b/nas/VirtualBox_VMs none bind,errors=continue,gid=1000,uid=1000 0 0
Wenn ich apparmor_status eingebe, kommt:

Code: Alles auswählen

apparmor module is loaded.
apparmor filesystem is not mounted.

Benutzeravatar
MSfree
Beiträge: 10773
Registriert: 25.09.2007 19:59:30

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von MSfree » 29.04.2019 09:57:28

7Saturn hat geschrieben: ↑ zum Beitrag ↑
29.04.2019 09:45:50
Man muss vielleicht dazu sagen, dass wir von einer Gesamtdatenmenge von ca. 8 TB sprechen
Dann kannst du tar vergessen. Das wird zur Tortur, wenn man einzelne Dateien aus so einem Riesenarchiv wiederherstellen muß.
...die aus genau dem Grund auch nur »inkrementell« (also per Abgleich) auf die andere Platte kopiert werden.
Ich würde dir empfehlen, mal einen Blick auf die --link-dest= Option zu werfen.

debianoli
Beiträge: 4073
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von debianoli » 30.04.2019 13:18:30

7Saturn hat geschrieben: ↑ zum Beitrag ↑
29.04.2019 09:45:50
Das mit tar verstehe ich noch nicht ganz. Man muss vielleicht dazu sagen, dass wir von einer Gesamtdatenmenge von ca. 8 TB sprechen, die aus genau dem Grund auch nur »inkrementell« (also per Abgleich) auf die andere Platte kopiert werden. Würde tar nicht versuchen, den ganzen Schwung rüber zu kopieren?
Darum ging es mir auch nicht. Damit kannst du testen, ob tar bei dem einen Verzeichnis ein ähnliches Verhalten wie rsync zeigt. Schließlich funktioniert bei mir ein Testdurchlauf seiner rsync-Syntax. Also muss es an dem einen Verzeichnis liegen, das irgendwie anders ist.

7Saturn
Beiträge: 19
Registriert: 04.02.2018 21:43:36

Re: rsync löscht ausgeschlossenes Verzeichnis – warum?

Beitrag von 7Saturn » 26.05.2019 12:07:35

So, mal wieder dazu gekommen, mich mit dem Problem rum zu schlagen. Abgesetzt habe ich folgendes:

Code: Alles auswählen

tar cf ~/temp.tar --exclude=./VirtualBox_VMs/* --verbose ./V*
Ergebnis ist ein tar, was genau das enthält, was ich auch gerne für rsync als Ergebnis gehabt hätte: Die anderen Inhalte (mit V*) sind drin, das Verzeichnis VirtualBox_VMs auch, aber nicht dessen Inhalte. Und jetzt?

Antworten