[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: aptitude-Fehler nach Filesystem-Error



Hallo,

Am Sam, 21 Okt 2006, Dirk Salva schrieb:
>On Sat, Oct 21, 2006 at 10:20:40AM +0200, Andreas Pakulat wrote:
>> > Hab ich mir schon gedacht. Da waren nur noch ".........." bzw.
>> > "@@@@@@@" drin. Wenn ich wüßte, wie ich solche Dateien finden könnte,
>> > wäre mir auch geholften. Die Statusdatei von logrotate hat es
>> > beispielsweise auch getroffen...
>> Keine Ahnung ob das mit find ginge aber mit grep saehe das so aus:
>> grep -rl "\(@@@@@@@@\|\.\.\.\.\.\.\.\.\)" * 
>
>Das probier' ich bei Gelegenheit mal aus. Was ich mit dem Beispiel
>meinte: schaue ich mir den Inhalt einer defekten Datei mit dem mc
>vermittels "F3" an, so sehe ich lauter Punkte. Gehe ich mit "F4" in den
>editor, dann sehe ich lauter @-Zeichen. Die Dateien haben quasi die
>gleiche Dateigrösse wie im intakten Zustand, bestehen aber fast nur
>noch aus diesen Zeichen.

Die Dateien wurden wohl "ausgenullt", also mit 'ASCII NUL'
ueberschrieben, das ist AFAIK das Standardverhalten von XFS wenn
Defekte auftreten.

ASCII NUL wird als '^@' (ein Zeichen) dargestellt.

Du hast schon dein Dateisystem und die Festplatte (smartctl,
badblocks) geprüft?

Suchen kannst du z.B. mit

    awk '/\0\0\0\0\0\0+/{print "6 or more consecutive NUL found";}'

Wenn du aber erst nach Dateien suchen willst ist perl noch ne
Moeglichkeit:

====
#!/usr/bin/perl -w
use strict;
use File::Find::Rule qw(find);

scalar @ARGV or push(@ARGV, ".");
my @files = find( file => 
                  '!grep' => qr/[^\0]/,
                  size => '>0',
                  in => @ARGV
                );
print join("\n", @files), "\n";
1;
====

Das findet nichtleere Dateien die nur[1] ASCII NUL enthalten, in den
Verzeichnissen, die als Argumente uebergeben wurde oder (ohne
Argumente) im aktuellen Verzeichnis.

HTH,
-dnh

[1] bei nem Test hier fand das aber noch ne andere. Hm.

-- 
   104: fork(2)
          New processes are created by other processes, just like new
          humans. New humans are created by other humans, of course, not
          by processes. (Unix System Administration Handbook)



Reply to: