是否可以ls
在不先安装的情况下在设备上运行?
像这样:
# ls /dev/sda1
ls
。
testdisk
通过testdisk
在命令行上将映像文件路径作为其第一个参数来运行命令,以查看其文件。
是否可以ls
在不先安装的情况下在设备上运行?
像这样:
# ls /dev/sda1
ls
。
testdisk
通过testdisk
在命令行上将映像文件路径作为其第一个参数来运行命令,以查看其文件。
Answers:
您可以使用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
我不能说我认为这是值得推荐的做法,但它可以满足您的要求。
挂载文件系统的全部目的是访问其文件。因此,总的来说,不行,如果不装载它就无法访问文件系统的文件。
有一些实用程序无需挂载即可直接访问文件,例如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
如前所述,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"