ls на пристрої, не встановлюючи його


9

Чи можливо запустити lsна пристрої, не встановивши його спочатку?
Щось на зразок цього:

# ls /dev/sda1

З якою метою?
dawud

Я не думаю, що так. Крім того, вам точно знадобиться інструмент ls.
strugee

Ні. Чому ви не скажете нам, чого ви намагаєтесь досягти?
jasonwryan

1
для тих часів я хочу встановити якийсь пристрій, але не пам'ятаю, чи є його sda1 / 2/3/4/5/6 і т. д. Просто потрібно перелічити файли на цьому пристрої, щоб дати мені зрозуміти, чи є його пристрій шукаю
lampoon

До речі: якщо у вас є зображення диска (а не розділу), ви, можливо, зможете побачити його файли, testdiskвиконавши testdiskкоманду з файлом шляху зображення як його перший параметр у командному рядку.
Аббафей

Відповіді:


11

Можна використовувати 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; ви не можете використовувати будь-яку довільну команду оболонки там. За замовчуванням налагодження відкриває диск у режимі лише для читання, тому це відносно безпечно; наприклад, спроба цього на не-ext2 / 3/4 розділі просто дає діагностику:

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

Я не можу сказати, що вважаю цю рекомендовану практику, але вона зробить те, що ви попросите.


3

Вся справа в монтажі файлової системи - це доступ до її файлів. Тож ні, загалом, ви не можете отримати доступ до файлів файлової системи, не встановивши її.

Є кілька утиліт, які отримують доступ до файлу безпосередньо без монтажу, наприклад, налагодження файлових систем ext2 / ext3 / ext4 та mtools для файлових систем FAT.

Для 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

2

Проста відповідь: ви не можете. lsвикористовує стандартні підпрограми libc, які перетворюють на системні виклики, які обслуговуються драйвером файлової системи, отже, неможливо використовувати ls(або що-небудь, використовуючи ці системні виклики для цього питання) без монтажу файлової системи.

Ви можете написати утиліту, яка б обходила це, маючи власну копію деяких частин драйвера файлової системи (така річ існує, наприклад, для читання файлових систем Ext2 з Windows), але це зовсім недоцільно.

Якщо ваша проблема полягає лише в ідентифікації розділів, ви, мабуть, повинні почати використовувати GPT, у якому є простір для імен розділів (72 байти на розділ). Деякі вищезазначені рішення (наприклад, Linux MD або LVM) дозволяють також називати.


1

Як було описано раніше, налагодження працює добре.

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

Для NTFS є ntfsls від ntfs-3g.

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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.