[linux-l] Datei loswerden

Christoph Biedl cbiedl at gmx.de
Mi Apr 7 11:02:31 CEST 2004


Steffen Dettmer wrote...

> * Peter Ross wrote on Wed, Apr 07, 2004 at 03:05 +0200:

> > Ich dachte, ich haette mal etwas gesehen, was mit inodes
> > arbeitet, aber im Moment finde ich es nicht.
> 
> Wie funktioniert das dann? Es sucht alle Dateinamen, die der
> inode hat und entfernt diese?

Der Dateiname ist letzlich nur eine Merkhilfe für die inode-Nummer. Von
daher ist 'Lösche Datei an Inode $N' eigentlich die logischere Operation,
während rm halt vorher noch den Namen auf den Inode umrechnet/umrechnen
läßt, weil der Name halt konsistenter und einfacher zu behalten ist.
(Wenn ich mich nicht irre, ist diese Konvertierung eine Funktion des VFS
 im Kernel)

> > Wenn der Kernel immer Filenamen als Parameter haben will und
> > dann '/' benutzt, um durch Verzeichnisse zu hecheln, bleibt
> > wohl nur ein Rumdoktorn auf dem Blockdevice bzw. ein
> > modifizierter Treiber fuer das Filesystem, wo Du fuer Deinen
> > Spezialfall eine Ausnahme eingebaut hast.
> 
> Ich finde, dass müsste fsck dann korrigieren können! Es ist ja
> eine "Unmöglichkeit" im FS, eine Invariante ("/" im Dateinamen
> sind verboten) ist verletzt. Oder?

Nicht fragen, ausprobieren:

# dd if=/dev/zero of=/tmp/block.img bs=1048576 count=1
# mke2fs /tmp/block.img
# mount -t ext2 -o loop /tmp/block.img /floppy/
# touch /floppy/'ichbineinfieserdateiname'
# umount /floppy/
# hexeditor /tmp/block.img
(einige Gemeinheiten)
# mount -r -t ext2 -o loop /tmp/block.img /floppy/
# ls -l /floppy/
ls: /floppy/ichb/neinfieserdateiname: No such file or directory
(...)
# umount /floppy
# e2fsck -f /tmp/block.img 
e2fsck 1.27 (8-Mar-2002)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'ichb/neinfieserdateiname' in / (2) has illegal characters in its name.
Fix<y>?
(...)
# ls -l /floppy/
total 12
-rw-r--r--    1 root     root            0 Apr  7 10:58 ichb.neinfieserdateiname
	Christoph





Mehr Informationen über die Mailingliste linux-l