Page 1 of 1

Dateien Löschen bei korruptem USB-Stick

Posted: 2009-09-17 16:36
by nathan
Hallo,
ich hab ein Scipt, welches Dateien und Unterverzeichnisse auf auf Windows Rechner angeschlossene USB-Sticks kopiert.
Dazu wird der USB Stick per Windows Freigabe von dem Linux Rechner (SuSE 10) per cifs gemounted.
Vor dem Kopieren wird das Zeilverzeichnis in .old umbenannt. Das alte .old Verzeichnis soll vorher gelöscht werden.
Dies mach ich bisher mit rm -rf $OLDDIR.

Nun kommt es vor, dass ein USB Stick defekt ist und es dabei Dateien mit merkwürdigen Namen gibt.
Der rm Job gibt dann folgendes aus:

Code: Select all

rm: cannot remove directory `/mnt/slot/DE/deu/1\002tg\032302252303226&.303246\023303250': No such file or directory
rm: cannot remove directory `/mnt/slot/DE/deu/303266302252^302252a302273s303244.' j': No such file or directory
rm: cannot remove `/mnt/slot/DE/deu/302273F3422252409,=2302263.7\030342225243': No such device or address
rm: cannot remove `/mnt/slot/DE/deu/v\027303237303215\005303241303264\006.ug303240': No such device or address
rm: FATAL: cannot ensure `/mnt/slot/DE' (returned to via ..) is safe: No such device or address
Unter Windows sieht dies so aus: http://opdat.de/Unbenannt.JPG

Teilweise ist der Linux Server zu dieser Zeit abgestürzt. Ein Hardwaredefekt (der ggf. auch hierfür verantwortlich ist) ist allerdings noch nicht überprüft.

Meine Frage:
Die Shell scheint teilweise die merkwürdigen Zeichen als Befehl und Pipes zu verstehen, was ungeahnte Effekte haben kann.
Wie könnten solche Dateien/Verzeichnisse erkannt und rausgefilter werden?

Vielen Dank und Gruß,
Nathan

Re: Dateien Löschen bei korruptem USB-Stick

Posted: 2009-09-17 18:12
by Joe User
Ungeprüft:

Code: Select all

find /path/to/mountpoint -type d -name *.old -print0 | xargs -0 rm -rf

Re: Dateien Löschen bei korruptem USB-Stick

Posted: 2009-09-18 14:50
by nathan
Danke.
klappt aber nicht

Code: Select all

find: "deu/┌òV├+f¤┼.Á\035¥": Datei oder Verzeichnis nicht gefunden
find: "deu/¯ò\025§l\037\023\036.à\030=": Datei oder Verzeichnis nicht gefunden
find: "deu/ä▒‗[½h╗ï.×½l": Datei oder Verzeichnis nicht gefunden
find: "deu/hBõ\\030J9Ù.¢¼@": Das Argument ist ungültig
find: "deu/{[j┌ú‗‗©.ÒaÕ": Datei oder Verzeichnis nicht gefunden
find: "deu/þ╠╚bÆ\035êÑ.▓Êc": Datei oder Verzeichnis nicht gefunden
Solche schönen Dateien liegen da:

Code: Select all

-rwxrwSrwx 1 user users 2898570528  7. Mai 2018  v?ßÍ?áô?.ugà
drwxrwxrwx 1 user users 3784157975 28. Mai 60056  VzÄz%│┘(.#¾¨
-r-xr-Sr-x 1 user users  337748112 28. Mai 60056   ý(╝dc³}.c]%
drwxrwxrwx 1 user users  850767864  6. Feb 2097  þ╠╚?Æ?êÑ.▓Êc
Aber vermutlich lassen die sich eh nicht löschen - da halt korrupt.

Vielleicht eine Idee, wie man das korrupte Dateisystem vor dem Löschen erkennen kann um so den Löschprozeß zu veerhindern?

Danke und Gruß,
Nathan

Re: Dateien Löschen bei korruptem USB-Stick

Posted: 2009-09-18 15:19
by Joe User
Die sind nicht korrupt, die Filenames sind nur in einem anderen (nicht unterstützten) Zeichensatz kodiert (vermutlich Unicode).
Dein Kernel, Coreutils, Linux-Utils und Filesystem-Utils verstehen alle Unicode? Andernfalls jeweils Unicode aktivieren und rekompilieren...