ada di perangkat tanpa memasangnya

9

Apakah mungkin dijalankan lsdi perangkat tanpa memasangnya terlebih dahulu?
Sesuatu seperti ini:

# ls /dev/sda1
mengecam
sumber
Apa tujuannya?
dawud
Saya kira tidak. Anda pasti membutuhkan alat selain itu ls.
strugee
Tidak. Mengapa Anda tidak memberi tahu kami apa yang ingin Anda capai?
jasonwryan
1
untuk saat-saat itu saya ingin me-mount beberapa perangkat tetapi tidak ingat apakah itu sda1 / 2/3/4/5/6 dll. Hanya perlu daftar file pada perangkat itu untuk memberi saya petunjuk apakah itu perangkat saya mencari
lampoon
Omong-omong: jika Anda memiliki gambar disk (bukan partisi), Anda mungkin dapat melihat file-nya testdiskdengan menjalankan testdiskperintah dengan jalur file gambar sebagai parameter pertama pada baris perintah.
Abbafei

Jawaban:

11

Anda dapat menggunakan debugfsprogram e2fsprogs . Meskipun namanya historis, ia akan bekerja pada sistem file ext2 / 3/4. Penggunaannya sederhana:

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

di mana "ls-l" adalah debugfsperintah khusus yang sebagian besar bertindak seperti ls -l; Anda tidak dapat menggunakan perintah shell sewenang-wenang di sana. Secara default, debugfs membuka drive dalam mode read-only sehingga ini relatif aman; misalnya mencoba ini pada partisi non ext2 / 3/4 hanya memberikan diagnostik:

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

Saya tidak bisa mengatakan saya mempertimbangkan praktik yang direkomendasikan ini, tetapi itu akan melakukan apa yang Anda minta.

msw
sumber
3

Inti dari pemasangan sistem file adalah untuk mengakses file-nya. Jadi tidak, secara umum, Anda tidak dapat mengakses file sistem file tanpa memasangnya.

Ada beberapa utilitas yang mengakses file secara langsung tanpa pemasangan, seperti debugfs untuk sistem file ext2 / ext3 / ext4 dan mtools untuk sistem file FAT.

Untuk ext2 / ext3 / ext4, daripada menjalankan program berbahaya dan sulit digunakan debugfs, Anda dapat membuat daftar lokasi pemasangan terakhir:

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

Namun ini hanya berguna jika lokasi pemasangan terakhir telah direkam.

Sebagian besar tipe sistem file mendukung pemberian label sistem file (mis tune2fs -L foo.). Jadi berikan label unik pada semua sistem file Anda. Kemudian pasang sistem file dengan label:

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

atau

mount LABEL=foo /media/foo
Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

Jawaban sederhana: Anda tidak bisa. lsmenggunakan rutin libc standar yang diterjemahkan ke dalam panggilan sistem yang dilayani oleh driver sistem file, oleh karena itu tidak mungkin untuk menggunakan ls(atau apa pun yang menggunakan panggilan sistem dalam hal ini) tanpa memasang sistem file.

Anda dapat menulis sebuah utilitas yang dapat menghindarinya dengan memiliki salinan sendiri dari beberapa bagian driver sistem file (hal seperti itu ada misalnya untuk membaca sistem file Ext2 dari Windows), tetapi itu cukup tidak praktis.

Jika masalah Anda hanya mengidentifikasi partisi, Anda mungkin harus mulai menggunakan GPT yang memiliki ruang untuk nama partisi (72 byte per partisi). Beberapa solusi yang ada (Linux MD atau LVM misalnya) memungkinkan penamaan juga.

peterph
sumber
1

Seperti dijelaskan sebelumnya, debugfs berfungsi dengan baik.

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

Untuk NTFS, ada ntfsls dari ntfs-3g.

ntfsls /dev/sda2

Untuk FAT, ada mdir, dari mtools.

mdir -i /dev/sdc1

Untuk exFAT saya tidak yakin. Tampaknya exfat-utils tidak termasuk alat yang mirip dengan yang dijelaskan di atas. Ada dumpexfat, tapi saya tidak berpikir itu akan memberikan informasi yang diminta.

Untuk mengetahui detail lebih lanjut tentang drive yang terpasang, ada lsblk.

lsblk

Secara pribadi saya lebih suka ini, dan telah menetapkan alias untuk itu:

alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"
Mika Norén
sumber