Найдите файловую систему размонтированного раздела из сценария

3 ответа

Я думаю, что нашел ответ: blkid

Из страницы справочника:

blkid программа является интерфейсом командной строки к работе с libblkid (3) библиотека. Это может определить тип содержания (например, файловая система или подкачка), который блочное устройство содержит и также приписывает (маркеры, пары NAME=value) от метаданных содержания (например, поля LABEL или UUID).

По-видимому, это печатает имя устройства наряду с типом файловой системы (наряду с некоторой другой полезной информацией). Получить список всех устройств с их типами:

blkid | sed 's!\(.*\):.*TYPE="\(.*\)".*!\1: \2!'

Найти все /dev/sd*/ устройства, просто добавьте в grep:

blkid | grep "/dev/sd.*" | sed 's!\(.*\):.*TYPE="\(.*\)".*!\1: \2!'

Затем просто cut или awk получить то, в чем Вы нуждаетесь.

16
27.01.2020, 19:48
  • 1
    blkid может отфильтровать то, в чем Вы нуждаетесь самостоятельно - никакая потребность в sed/grep/awk волшебстве: blkid -s TYPE -o value /dev/sda3 –  Petr Uzel 17.07.2012, 11:28
  • 2
    @PetrUzel - Потрясающий! Это точно, что я искал! –  beatgammit 18.07.2012, 20:51
  • 3
    Не забудьте работать с sudo если Вы не корень! Этот ловил меня потому что blkid не печатает сообщений об ошибках и выходов с кодом состояния 0, если он не может получить доступ к блочным устройствам... –  Asfand Qazi 24.08.2015, 13:46

file -s /path/to/device определит файловую систему на диске/разделе/части.

А-ля:

[root@node2 ~]# file -s /dev/mapper/VolGroup00-LogVol00
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext3 filesystem data (needs journa recovery) (large files)
[root@node2 ~]# file -s /dev/mapper/coraid--pool-coraid--lv1 
/dev/mapper/coraid--pool-coraid--lv1: Linux GFS2 Filesystem (blocksize 4096, lockproto lock_dlm)
[root@node2 ~]# file -s /dev/mapper/coraid--pool-coraid--lv2 
/dev/mapper/coraid--pool-coraid--lv2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

по крайней мере, на Linux это делает.

9
27.01.2020, 19:48
  • 1
    Существует ли способ надежно отфильтровать тип файловой системы из сценария? –  beatgammit 18.07.2012, 20:50
  • 2
    зависит от того, полагаете ли Вы, что полное имя файловой системы фильтровало достаточно, как в | cut -d: -f2 | cut -d( -f1 или что-то. Это не настолько симпатично как blkid, это наверняка. :) –  Tim Kennedy 20.07.2012, 04:56

Вторичный вариант, который работает со многими файловыми системами и позволяет работать даже с файловыми системами с поврежденными структурами, testdisk. (Вы можете запустить sudo apt install testdisk, чтобы установить его в системах на основе Debian -.)

Скрипт для возврата только типа файловой системы:

$ testdisk /list "$path_to_partition" | awk '$1 == "P" {print $2}'
1
27.01.2020, 19:48

Теги

Похожие вопросы