ls在设备上而不安装


9

是否可以ls在不先安装的情况下在设备上运行?
像这样:

# ls /dev/sda1

目的是什么?
dawud

我不这么认为。除了,您当然还需要其他工具ls
13年

不。为什么不告诉我们您要达到的目标?
jasonwryan

1
在那些时候,我想挂载一些设备,但是不记得它的sda1 / 2/3/4/5/6等。只需要列出该设备上的文件,就可以知道我是否使用了该设备。寻找
lampoon

顺便说一句:如果您有磁盘映像(而不是分区),则可以testdisk通过testdisk在命令行上将映像文件路径作为其第一个参数来运行命令,以查看其文件。
阿巴菲(Abbafei)

Answers:


11

您可以使用e2fsprogsdebugfs程序。尽管其历史名称,它仍可在ext2 / 3/4文件系统上运行。用法很简单:

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

其中“ ls -l”是一个debugfs特定的命令,其行为大致类似于ls -l;您不能在那里使用任何任意的shell命令。默认情况下,debugfs以只读模式打开驱动器,因此这是相对安全的。例如,在非ext2 / 3/4分区上尝试此操作只会给出诊断信息:

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

我不能说我认为这是值得推荐的做法,但它可以满足您的要求。


3

挂载文件系统的全部目的是访问其文件。因此,总的来说,不行,如果不装载它就无法访问文件系统的文件。

有一些实用程序无需挂载即可直接访问文件,例如ext2 / ext3 / ext4文件系统的debugfs和FAT文件系统的mtools

对于ext2 / ext3 / ext4 debugfs,您可以列出其最后的安装位置,而不是调用危险且难于使用的程序:

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

但是,这仅在记录了最后一个安装位置时才有用。

大多数文件系统类型都支持给文件系统标签(例如tune2fs -L foo)。因此,给所有文件系统一个唯一的标签。然后通过标签挂载文件系统:

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

要么

mount LABEL=foo /media/foo

2

简单的答案:您不能。ls使用标准的libc例程,这些例程转换为由文件系统驱动程序提供服务的系统调用,因此,ls如果不挂载文件系统,则无法使用(或使用该系统调用的任何方法)。

您可以编写一个实用程序来避免此问题,因为它拥有文件系统驱动程序某些部分的副本(例如,从Windows读取Ext2文件系统时就已经存在),但这是不切实际的。

如果您的问题只是识别分区,则可能应该开始使用GPT,它具有用于分区名称的空间(每个分区72字节)。一些上层解决方案(例如Linux MD或LVM)也允许命名。


1

如前所述,debugfs运行良好。

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

对于NTFS,有来自ntfs-3g的ntfsls。

ntfsls /dev/sda2

对于FAT,有mdir,来自mtools。

mdir -i /dev/sdc1

对于exFAT,我不确定。似乎exfat-utils不包含任何类似于上述工具的工具。虽然有dumpexfat,但我认为它不会提供所需的信息。

要查找有关附加驱动器的更多详细信息,请访问lsblk。

lsblk

我个人更喜欢此方法,并为此设置了别名:

alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.