Apakah mungkin dijalankan ls
di perangkat tanpa memasangnya terlebih dahulu?
Sesuatu seperti ini:
# ls /dev/sda1
ls
.
Apakah mungkin dijalankan ls
di perangkat tanpa memasangnya terlebih dahulu?
Sesuatu seperti ini:
# ls /dev/sda1
ls
.
Jawaban:
Anda dapat menggunakan debugfs
program 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 debugfs
perintah 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.
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
Jawaban sederhana: Anda tidak bisa. ls
menggunakan 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.
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"