Es ist auf dem Gerät, ohne es zu montieren


9

Ist es möglich, lsauf einem Gerät zu laufen , ohne es vorher zu mounten?
Etwas wie das:

# ls /dev/sda1

Zu welchem ​​Zweck?
Dawud

Das glaube ich nicht. Außerdem brauchst du definitiv ein Werkzeug ls.
Strugee

Warum sagst du uns nicht, was du erreichen willst?
Jasonwryan

1
Für diese Zeiten möchte ich ein Gerät mounten, erinnere mich aber nicht, ob es sda1 / 2/3/4/5/6 usw. ist. Ich muss nur die Dateien auf diesem Gerät auflisten, um mir einen Hinweis zu geben, ob es das Gerät ist, das ich bin auf der Suche nach
Lampoon

Übrigens: Wenn Sie ein Image einer Festplatte (keine Partition) haben, können Sie möglicherweise deren Dateien anzeigen, testdiskindem Sie den testdiskBefehl mit einem Image-Dateipfad als erstem Parameter in der Befehlszeile ausführen.
Abbafei

Antworten:


11

Sie können das debugfsProgramm von e2fsprogs verwenden . Trotz seines historischen Namens funktioniert es auf ext2 / 3/4 Dateisystemen. Die Verwendung ist einfach:

# debugfs -R "ls -l" /dev/sda6
  2   40755 (2)   1001   1001    4096 17-Sep-2013 04:03 .
  2   40755 (2)   1001   1001    4096 17-Sep-2013 04:03 ..
 16  100644 (1)   1001   1001    9085 17-Sep-2013 04:03 avserver.conf
 17  100644 (1)   1001   1001    2177 17-Sep-2013 04:03 bash.bashrc
 26  100644 (1)   1001   1001     722 17-Sep-2013 04:03 crontab
 …   

wobei "ls -l" ein debugfsspezifischer Befehl ist, der sich meistens so verhält ls -l; Sie können dort keinen beliebigen Shell-Befehl verwenden. Standardmäßig öffnet debugfs ein Laufwerk im schreibgeschützten Modus, sodass dies relativ sicher ist. Wenn Sie dies beispielsweise auf einer Partition ohne ext2 / 3/4 versuchen, erhalten Sie nur eine Diagnose:

# debugfs -R "ls -l" /dev/sda2
/dev/sda2: Bad magic number in super-block while opening filesystem
ls: Filesystem not open

Ich kann nicht sagen, dass ich diese empfehlenswerte Praxis in Betracht ziehe, aber sie wird das tun, was Sie verlangen.


3

Der springende Punkt beim Mounten eines Dateisystems ist der Zugriff auf seine Dateien. Nein, im Allgemeinen können Sie nicht auf die Dateien eines Dateisystems zugreifen, ohne es zu mounten.

Es gibt einige Dienstprogramme, die direkt auf eine Datei zugreifen, ohne sie zu mounten, z. B. debugfs für ext2 / ext3 / ext4-Dateisysteme und mtools für FAT-Dateisysteme.

Für ein ext2 / ext3 / ext4 debugfskönnen Sie den letzten Mount-Speicherort auflisten, anstatt das gefährliche und schwer zu verwendende Programm aufzurufen :

tune2fs -l /dev/sda1 | grep 'Last mounted'

Dies ist jedoch nur nützlich, wenn der letzte Mount-Speicherort aufgezeichnet wurde.

Die meisten Dateisystemtypen unterstützen die Vergabe von Dateisystembezeichnungen (z tune2fs -L foo. B. ). Geben Sie also allen Ihren Dateisystemen eine eindeutige Bezeichnung. Hängen Sie dann das Dateisystem nach Label ein:

mount /dev/disks/by-label/foo /media/foo

oder

mount LABEL=foo /media/foo

2

Einfache Antwort: Sie können nicht. lsVerwendet Standard-Libc-Routinen, die in Systemaufrufe übersetzt werden, die vom Dateisystemtreiber bereitgestellt werden. Daher ist es nicht möglich, diese zu verwenden ls(oder irgendetwas, das diese Systemaufrufe verwendet), ohne das Dateisystem zu mounten.

Sie könnten ein Dienstprogramm schreiben, das dies umgeht, indem Sie eine eigene Kopie einiger Teile des Dateisystemtreibers haben (so etwas gibt es beispielsweise zum Lesen von Ext2-Dateisystemen unter Windows), aber das ist ziemlich unpraktisch.

Wenn Ihr Problem nur darin besteht, die Partitionen zu identifizieren, sollten Sie wahrscheinlich GPT verwenden, das Platz für Partitionsnamen bietet (72 Byte pro Partition). Einige darüber liegende Lösungen (z. B. Linux MD oder LVM) ermöglichen auch die Benennung.


1

Wie bereits beschrieben, funktioniert debugfs gut.

debugfs -R "ls -l" /dev/sda1

Für NTFS gibt es ntfsls von ntfs-3g.

ntfsls /dev/sda2

Für FAT gibt es mdir von mtools.

mdir -i /dev/sdc1

Zum Beispiel bin ich mir allerdings nicht sicher. Exfat-utils enthält anscheinend keine Tools, die den oben beschriebenen ähnlich sind. Es gibt zwar Dumpexfat, aber ich glaube nicht, dass es die angeforderten Informationen liefert.

Weitere Informationen zu angeschlossenen Laufwerken finden Sie unter lsblk.

lsblk

Persönlich bevorzuge ich dies und habe einen Alias ​​dafür festgelegt:

alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.