È sul dispositivo senza montarlo


9

È possibile eseguire lsun dispositivo senza prima montarlo?
Qualcosa come questo:

# ls /dev/sda1

A quale scopo?
Dawud,

Io non la penso così. Avresti sicuramente bisogno di uno strumento oltre ls.
Strugee,

No. Perché non ci dici cosa stai cercando di ottenere?
Jasonwryan,

1
per quelle volte voglio montare qualche dispositivo ma non ricordo se è sda1 / 2/3/4/5/6 ecc. Devo solo elencare i file su quel dispositivo per darmi un indizio se è il dispositivo che sono cercando
lampoon,

A proposito: se hai un'immagine di un disco (non una partizione), potresti essere in grado di vedere i suoi file testdiskeseguendo il testdiskcomando con un percorso del file di immagine come primo parametro sulla riga di comando.
Abbafei,

Risposte:


11

Puoi usare il debugfsprogramma di e2fsprogs . Nonostante il suo nome storico, funzionerà su filesystem ext2 / 3/4. L'utilizzo è semplice:

# 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
 …   

dove "ls -l" è un debugfscomando specifico che agisce principalmente come ls -l; non è possibile utilizzare alcun comando di shell arbitrario lì. Per impostazione predefinita, debugfs apre un'unità in modalità di sola lettura, quindi è relativamente sicura; per esempio provare questo su una partizione non ext2 / 3/4 fornisce solo una diagnostica:

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

Non posso dire di considerare questa pratica raccomandabile, ma farà ciò che mi chiedi.


3

L'intero punto di montare un filesystem è accedere ai suoi file. Quindi no, in generale, non è possibile accedere ai file di un filesystem senza montarlo.

Ci sono alcune utility che accedono direttamente a un file senza montarlo, come debugfs per filesystem ext2 / ext3 / ext4 e mtools per filesystem FAT.

Per ext2 / ext3 / ext4, anziché invocare il programma pericoloso e difficile da usare debugfs, puoi elencare la sua ultima posizione di montaggio:

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

Tuttavia, questo è utile solo se è stata registrata l'ultima posizione di montaggio.

La maggior parte dei tipi di filesystem supportano dando le etichette dei filesystem (es tune2fs -L foo.). Quindi dai a tutti i tuoi filesystem un'etichetta unica. Quindi montare il filesystem per etichetta:

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

o

mount LABEL=foo /media/foo

2

Risposta semplice: non puoi. lsusa routine libc standard che si traducono in chiamate di sistema che sono servite dal driver del file system, quindi non è possibile usare ls(o qualsiasi altra cosa usando quelle chiamate di sistema per quella materia) senza montare il file system.

Si potrebbe scrivere un'utilità che lo eluderebbe con una propria copia di alcune parti del driver del file system (tale cosa esiste, ad esempio, per la lettura dei file system Ext2 da Windows), ma ciò non è pratico.

Se il tuo problema è solo identificare le partizioni, probabilmente dovresti iniziare a usare GPT che ha spazio per i nomi delle partizioni (72 byte per partizione). Alcune soluzioni sovrastanti (ad esempio Linux MD o LVM) consentono anche la denominazione.


1

Come precedentemente descritto, il debugfs funziona bene.

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

Per NTFS, c'è ntfsls da ntfs-3g.

ntfsls /dev/sda2

Per FAT, c'è mdir, da mtools.

mdir -i /dev/sdc1

Per exFAT non sono sicuro però. Sembra che exfat-utils non includa strumenti simili a quelli sopra descritti. C'è dumpexfat però, ma non credo che fornirà le informazioni richieste.

Per scoprire maggiori dettagli sulle unità collegate, c'è lsblk.

lsblk

Personalmente preferisco questo e ho impostato un alias per questo:

alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.