ls
最初にマウントせずにデバイスで実行することはできますか?
このようなもの:
# ls /dev/sda1
ls
。
testdisk
実行するtestdisk
と、そのファイルを表示できる場合があります。
ls
最初にマウントせずにデバイスで実行することはできますか?
このようなもの:
# ls /dev/sda1
ls
。
testdisk
実行するtestdisk
と、そのファイルを表示できる場合があります。
回答:
e2fsprogsのdebugfs
プログラムを使用できます。その歴史的な名前にもかかわらず、それは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
です。そこでは任意のシェルコマンドを使用できません。デフォルトでは、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
簡単な答え:できません。ls
は、ファイルシステムドライバーによって提供されるシステムコールに変換される標準のlibcルーチンを使用するls
ため、ファイルシステムをマウントせずに使用する(または、システムコールを使用して何かを行う)ことはできません。
ファイルシステムドライバーの一部の独自のコピー(たとえば、WindowsからExt2ファイルシステムを読み取るために存在するもの)を用意することでこれを回避するユーティリティを作成できますが、これは実際的ではありません。
問題がパーティションの識別だけである場合は、おそらく、パーティション名用のスペース(パーティションあたり72バイト)を持つGPTの使用を開始する必要があります。一部の上位ソリューション(Linux MDやLVMなど)でも名前を付けることができます。
前述のように、debugfsは適切に機能します。
debugfs -R "ls -l" /dev/sda1
NTFSには、ntfs-3gのntfslsがあります。
ntfsls /dev/sda2
FATには、mtoolsのmdirがあります。
mdir -i /dev/sdc1
exFATについてはわかりません。exfat-utilsには、上記のようなツールは含まれていません。dumpexfatはありますが、要求された情報が提供されるとは思いません。
接続されているドライブの詳細を調べるためのlsblkがあります。
lsblk
個人的に私はこれを好み、それにエイリアスを設定しました:
alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"