Backslashes in Dateinamen = Problem

Status
Für weitere Antworten geschlossen.

schmadde

Benutzer
Mitglied seit
15. Jan 2011
Beiträge
253
Punkte für Reaktionen
6
Punkte
18
Ich habe hier eine neue DS211+ mit DSM 3.0, die ich unter anderem dazu nutzen wollte ein paar Linux-Rechner über VPN per rsnapshot zu sichern. Bisher hat das ein Ubuntu-Rechner erledigt, den ich aber nicht durchlaufen lassen will. Dabei bin ich über eine Reihe von Schwierigkeiten gestolpert, von denen die im Moment problematischste folgende ist:

rsnapshot ist nicht in der Lage einige Dateien zu löschen und das kurioseste: die kann ich nichtmal mit "rm" von der Shell aus löschen. Allen Dateien ist gemeinsam, dass sich Backslashes im Dateinamen befinden (das ist halt so und kann auch nicht geändert werden, sollte aber normalerweise kein Problem sein).

Es hat nichts mit falschem Escaping zu tun, offenbar können es die Kommandos einfach nicht. Die Dateien mit "mv" umzubenennen und dann zu löschen geht übrigens.

Was ist das für ein komisches Verhalten und wie kann man es abstellen?
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Bei mir sieht das so aus:

Rich (BBCode):
ds209> touch test\test.txt
ds209> ls
test?test.txt
ds209> rm test?test.txt

Der "\" wird also zu einem anderen Sonderzeichen. Evtl. liegt das daran!?

gruss
dude
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du es mal direkt mit rsync versucht? Klappt es dann korrekt?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Möglicherweise ist die per Firmware installierte BusyBox-ash nicht ganz unproblematisch. Vielleicht hilft es ja sich eine IPKG-Bash zu installieren und mal zu testen, ob diese auch Probleme aufzeigt. Falls das so wäre, müsste man sich mit den Synoloyg-Entwicklern auseinandersetzen, denn es gab in der Vergangenheit ein paar Änderungen in den Dateisystemmodulen (Groß-/Kleinschreibung von Dateinamen) ... wer weiß, was die da noch alles veranstaltet haben.

Itari
 

schmadde

Benutzer
Mitglied seit
15. Jan 2011
Beiträge
253
Punkte für Reaktionen
6
Punkte
18
Möglicherweise ist die per Firmware installierte BusyBox-ash nicht ganz unproblematisch. Vielleicht hilft es ja sich eine IPKG-Bash zu installieren und mal zu testen, ob diese auch Probleme aufzeigt.
Das hatte ich schon probiert, bevor ich hier gepostet habe. Drum habe ich ja auch gesagt, dass es nichts mit der Shell zu tun hat (käme ja nur ein Problem mit dem Escaping in Frage). /bin/rm ist ein symlink auf Busybox - hmm, das könnte ein Hinweis sein. Ich bastel mir mal schnell ein eigenes rm und probiers nochmal.

Lustigerweise kann ich ein File mit Backslash im Dateinamen anlegen und mit rm wieder löschen (touch test\\test; rm test\\test). Ob es da noch ein zusätzliches Sonderzeichen im Dateinamen gibt? Die Dateien selbst sind mit rsync auf die synology gespielt von der externen USB-Festplatte die bisher das Backup enthielt.
 

schmadde

Benutzer
Mitglied seit
15. Jan 2011
Beiträge
253
Punkte für Reaktionen
6
Punkte
18
Es scheint zumindest teilweise ein Problem mit Busybox zu sein. Ich habe mir in Perl ein Mini-rm geschrieben, das Dateinamen von der Kommandozeile liest und mit unlink löscht. Damit konnte ich die meisten Dateien mit Backslash löschen. Manche allerdings nicht. Leider konnte ich das nicht weiter verfolgen, weil ich nur ein paar Minuten Zeit hatte. Das Problem ist ein bisschen ärgerlich, weil rsnapshot so nicht funktioniert.

Hat busybox immer solche Probleme oder ist das Synology-spezifisch? Gibts für die Synology ein echtes rm als Package? Oder muss ich mir GNU-rm selbst kompilieren (würd ich gerne vermeiden).
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Manche allerdings nicht.

Kannst du uns mal ein paar Beispiele posten?

Wenn du das IPKG installiert hast, kannst dir doch die coreutils herunterladen. Da sollte auch ein 'rm' dabei sein. Allerdings macht der 'rm' ja ganz selten etwas Spezifisches mit den Dateinamen ... meist ist die Shell beteiligt an der Interpretation, was ein Dateiname ist. Und alles was von der Shell durchgelassen wird, landet per System-Call im File-System-Modul und wird dort interpretiert, um die Inode zu erhalten.

Itari
 

schmadde

Benutzer
Mitglied seit
15. Jan 2011
Beiträge
253
Punkte für Reaktionen
6
Punkte
18
Mit der Shell hat das nix zu tun, denn das Perl-rm bekommt ja genau die gleichen Kommandozeilenparameter wie das rm von busybox.

Symptom ist dass beim Zugriff ein "File not found" ausgegeben wird, das passiert sogar beim ls!

Es gibt da allerdings noch ein paar Merkwürdigkeiten, die ich mir nicht erklären kann. In einem Verzeichnis hatte ich eine niedrige zweistellige Anzahl von Dateien, deren Namen aussahen wie URLs, nur mit Backslashes statt forward slashes. Einige konnten mit perl-rm gelöscht werden (allerdings nicht mit busybox rm), andere nicht. Die hab ich jetzt grade nicht wiedergefunden.

Eine andere Datei hatte einen Backslash im Dateinamen, beim "ls -l" bekomme ich statt Permissions und Ownership nur Fragezeichen angezeigt, also statt:

-rw-r--r-- foo bar filename_with\backslash

-???????? ??? ??? filename_with\backslash

Sowas kenne ich bisher nur von kaputten Dateisystemen, die durch Absturz oder Hardwareschaden beschädigt wurden. Sowohl synology als auch Festplatten sind aber brandneu und die DS wurde bisher noch nichtmal ordentlich runtergefahren, geschweige denn dass sie abgestürzt wäre. Die Daten sind per rsync von einer USB Platte überspielt worden.

Die Dateien sehen in jedem snapshot gleich aus, was ja auch kein Wunder ist, weil hard link.

Was mag da passiert sein? Ein solches File kann ja eigentlich nicht so angelegt werden. Den Verzeichnisbaum habe ich übrigens mehrfach gelöscht und neu rsynct, weil ich von einem Übertragungsfehler ausgegangen bin. Immer das selbe Ergebnis.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat