rsnapshot: rm-Problem

Beitragsdatum 01.01.2018
Letzte Aktualisierung 17.12.2019
Betrifft rsnapshot 1.3.1 u.a., Raspbian/Debian verschiedene Versionen u.a.

Problem

Ein Backup-Job über rsnapshot lief nicht mehr. Dies stellte ich bei einer Routinekontrolle fest - die Timestamps der daily.*-Verzeichnisse waren alle veraltet - eigentlich müsste daily.0 immer vom aktuellen Tag sein.

Bei der Prüfung des Logs von rsnapshot (unter /var/log/rsnapshot) stieß ich dann auf folgende Fehlermeldungen:

[22/Dec/2017:01:03:14] /usr/bin/rsnapshot -c /etc/rsnapshot_backup.conf daily: started
[22/Dec/2017:01:03:14] Setting locale to POSIX "C"
[22/Dec/2017:01:03:14] echo 16933 > /var/run/rsnapshot.pid
[22/Dec/2017:01:03:14] /bin/rm -rf /media/backup/s00151_nas/daily.6/
[22/Dec/2017:01:03:14] /usr/bin/rsnapshot -c /etc/rsnapshot_backup.conf daily: ERROR: Warning! /bin/rm failed.
[22/Dec/2017:01:03:14] /usr/bin/rsnapshot -c /etc/rsnapshot_backup.conf daily: ERROR: Error! rm_rf("/media/backup/s00151_nas/daily.6/")
[22/Dec/2017:01:03:14] rm -f /var/run/rsnapshot.pid

Ursache(n)

Dateinamen mit Anführungszeichen

Nach manuellen Löschversuchen (Problem blieb bestehen) und Versuchen die Berechtigung der Freigabe (/media/backup ist eine Freigabe über Samba) (auch keine Lösung) testete ich den rsnapshot-Job manuell.

Dabei wurden weitere Fehler angezeigt - nämlich die Verzeichnisse, die sich nicht löschen ließen.

Ich prüfte die Inhalte der Verzeichnisse und stellte fest, dass Dateinamen mit Anführungszeichen enthalten waren, also z.B.:

datei1
"datei2"
datei3

rm kann diese Dateinamen nicht löschen.

Auf dem Client, der eine samba-Freigabe eingebunden hatte und darüber rsnapshot laufen ließ, konnte Verzeichnisse nicht löschen, da diese nicht leer seien.

Ein rm -rf löscht rekursiv die Inhalte von Verzeichnissen und dann mittels rmdir das leere Verzeichnis selbst.

Befindet sich im Verzeichnis nun ein Softlink auf eine Datei, der nicht mehr aufgelöst werden kann (das Ziel des Softlinks existiert nicht), dann kann unter Umständen dieser Link nicht gelöscht werden.


Lösung

Für beide Ursachen gilt: die problematischen Dateien/Links müssen direkt auf dem Server, der die Freigabe bereitstellt, gelöscht werden. Daher ist ein Zugriff z.B. via ssh erforderlich.

Dateinamen mit Anführungszeichen

Ich wechselte direkt auf das NAS, das die Freigaben erzeugt und löschte dort manuell als root alle Dateien mit Anführungszeichen.

Dies wiederholte ich auch auf der Backup-Freigabe (das fehlgeschlagene Backup ist selbst auch eine Freigabe vom NAS).

Nun konnte rsnapshot wieder korrekt durchlaufen.

Die Dateien mit Anführungszeichen waren allesamt obsolet und konnten weg. Hätte ich sie noch gebraucht, hätte ich die Dateien umbenennen können. Dann aber ebenfalls auf der zu sichernden Freigabe und in den Backups.

Auch hier muss auf den NAS direkt gelöscht werden.

Alle Softlinks lassen sich wie folgt finden:

# find [path] -type l 
# z.B.:
find /mnt/freigabe -type l

# direkt loeschen:
# find [path] -type l -delete
# z.B.:
find /mnt/freigabe -type l - delete

Danach kann rm vom Client aus wieder richtig löschen.


Ähnliche Themen im blog:
rsnapshot, freigabe


zurück