rsync - mknod ... failed: Operation not permitted?
Hallo.
Ich habe ein Problem mit einem Backup über rsync.
Das Backup geht auf ein mit cifs gemountetes Laufwerk, das höchstwahrscheinlich auch ein Grund für das Problem sein wird, da das gleiche Backup auf eine normal gemountete Festplatte funktioniert.
Bekomme immer folgenden Fehler der dann am Ende auch zu einem Fehler führt.
b'rsync: [generator] mknod "/mnt/Laufwerke/99_Fritz.NAS/Transcend/_Backup/Linux/Test-Ordner-21-10-17/.steam/steam.pipe" failed: Operation not permitted (1)\n'
Da dieses Backup über ein mehr oder weniger komplexes Python Script läuft, bei dem mehrere Backups aneinander gereiht werden ist das ungünstig wenn ein Fehler auftritt.
Folgende Variablen werden an den subprocess übergeben:
rsync_liste = ['rsync',
'-rptgoDvvAhz',
'--info=progress2',
'--stats',
'--partial',
('--log-file=' + logfile),
'--delete',
'--delete-excluded',
('--backup-dir=' + backup_dir),
('--exclude-from=' + exclude_NAS_File),
source,
target]
Hat jemand eine Ahnung wie ich diesen Fehler wegbekommen könnte, oder zumindest wie er hervorgerufen wird? Das cifs keine Symlinks kann weiß ich und hoffe ich dass ich es ausgeschlossen habe, aber sicher bin ich mir nicht.
Vielen Dank im Voraus
1 Antwort
Wenn du alle Attribute erhalten will, dann man mache lieber ein tar - File und schiebe das aufs cifs, weil einiges davon wird auf cifs nicht gehen:
p Permissions?
g group
o owner
D Devices / Specials
A Acls
Die aktuelle Fehlermeldung kommt vom "D".
Backup mit tar funktioniert komplett anders, tar schreibt im Prinzip alle Daten in eine große Datei. Man bekommt da zwar auch inkrementelle Backups hin, aber so wie bei rsync geht es nicht.
Das Problem ist halt, wenn du per rsync sicherst und die Linux-Attribute alle erhalten willst, wird das mit cifs nix. Du müsstest die Attribute irgendwo getrennt sichern. Oder halt so "von hinten durch die Brust ins Auge", großes File über den gesamten Backupspeicher auf dem cifs anlegen, in dem File nen ext4 anlegen, per loop-Device mounten und da dann hin rsyncen.
Die Frage ist halt, was sicherst du da, brauchst du die Attribute und wenn ja, welche.
--delete / --backup-dir passt schon.
Das Backup ist von meinem Linux Manjaro home Verzeichnis. Bis auf Cache, temp usw.. /boot sollte dann auch noch dazu kommen. Auf der NAS liegt aber auch das Backup einer ntfs Partition. Deshalb werde ich mit meinen beschränkten Kenntnissen wohl nicht im cifs rum kommen.
Hab ich das richtig verstanden dass wenn ich ein Backup mit tar machen möchte, ich auf rsync verzichten muß?
tar ist wie zip, das packt alles in eine Datei, das hilft dir da nicht. Lasse ggfs. beim rsync alles was was oben steht weg und sichere eben ohne Rechte. Für's home ist das fast egal, zumindest wenn du alleine auf der Kiste bist und keine Programme im home compilierst. Ansonsten: Speichere zusätzlich eine Datei mit den Permissions mit "getfacl -R . > permissions.txt", die du zusätzlich sicherst (ggf. einmal gzip / bzip drüber, damit die kleiner wird, das ist reiner Text), statt dem . kannst du auch direkt das Verzeichnis angeben.
Bei Bedarf stehen in dem Textfile Benutzer, Gruppe und Rechte, die du auch mit "setfacl --restore=permissions.txt" wieder herstellen kannst.
Das getfacl / setfacl musst du ggfs. nachinstallieren, das Paket sollte irgendwas mit acl heissen, weiss es bei Manjaro nicht.
Vielen Dank erst mal.
Dieser eine Fehler kam wirklich von der Option "D".
Ob dies für alles hilft muss ich erst mal sehen wenn ich das ganze Backup durchlaufen lasse.
Mit tar hab ich mich bisher nicht beschäftigt, weil dachte rausgelesen zu haben dass man so die funktionen mit "--delete" und "--backup-dir=" nicht verwenden kann. Oder täusche ich mich da?
Der Speicherplatz auf meinem NAS ist leider sehr begrenzt und da wäre es ungünstig wenn da dauerhaft in der Quelle gelöschte Daten erhalten bleiben. Das backup-dir würde ich von Zeit zu Zeit löschen damit die NAS nicht übergeht.