ls
まずインストールせずにデバイスで実行できますか?
このような:
# ls /dev/sda1
答え1
debugfs
次のプログラムが利用可能ですe2fsprogs。歴史的な名前にもかかわらず、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
このアプローチが推奨する価値があるとは言えませんが、お客様の要件を満たしています。
答え2
ファイルシステムをマウントする目的は、そのファイルにアクセスすることです。したがって、通常、ファイルシステムをマウントしないと、ファイルシステムのファイルにアクセスできなくなります。
インストールせずにファイルに直接アクセスできるユーティリティがあります。デバッグファイルext2/ext3/ext4 ファイルシステムとツールボックスFATファイルシステムの場合。
debugfs
ext2/ext3/ext4 の場合、危険で使いにくいプログラムを呼び出す代わりに、最後のマウント位置を一覧表示できます。
tune2fs -l /dev/sda1 | grep 'Last mounted'
ただし、これは最後のインストール場所が記録された場合にのみ役立ちます。
ほとんどのファイルシステムタイプはファイルシステムラベルの提供をサポートしています(例tune2fs -L foo
:)。したがって、すべてのファイルシステムに一意のラベルを付けてください。次に、ラベルを介してファイルシステムをマウントします。
mount /dev/disks/by-label/foo /media/foo
または
mount LABEL=foo /media/foo
答え3
述べたように、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"
答え4
簡単な答え:できません。ファイルシステムドライバが提供するシステムコールに変換される標準のlibcルーチンを使用するため、ファイルls
システム(またはこれらのシステムコールを使用するすべて)をマウントしないと使用できません。ls
ファイルシステムドライバの特定の部分の独自のコピーを保持して(たとえば、WindowsがExt2ファイルシステムを読み取る場合など)、この問題を回避するユーティリティを作成できますが、これは非常に実用的ではありません。
問題がパーティションを識別するだけであれば、おそらく次のものを使い始める必要があります。GPTパーティションの名前空間(パーティションごとに72バイト)があります。一部のオーバーレイソリューション(Linux MDやLVMなど)でも命名が可能です。