Команда findfs

Команда findfs позволяет задействовать одноименную утилиту, предназначенную для поиска файловых систем. Данная утилита способна искать файловые системы с заданными метками и идентификаторами UUID как на устройствах с таблицами разделов MSDOS, так и на устройствах с таблицами разделов GUID. В случае таблиц разделов MSDOS и для указания искомых меток и идентификаторов UUID используются запросы LABEL и UUID соответственно, а в случае таблиц разделов GUID — запросы PARTLABEL и PARTUUID соответственно.

Базовый синтаксис команды выглядит следующим образом:

$ findfs [параметры] запрос=значение

Утилита не поддерживает каких-либо влияющих на ее работу параметров. Что касается, запросов, то, как уже упоминалось, поддерживаются запросы LABEL, UUID, PARTLABEL и PARTUUID. В случае обнаружения удовлетворяющей запросу файловой системы, утилита выведет имя файла соответствующего ей устройства.

Примеры использования

Поиск файловых систем

Для начала ознакомимся со списком доступных файловых систем. Для этого воспользуемся утилитой lsblk, а для наглядности выведем список в формате json:

$ lsblk --json -o NAME,LABEL,UUID,PARTLABEL,PARTUUID
   {
      "blockdevices": [
         {
            "name": "sda",
            "label": null,
            "uuid": null,
            "partlabel": null,
            "partuuid": null,
            "children": [
               {
                  "name": "sda1",
                  "label": null,
                  "uuid": "253d4cfa-b44a-4329-9033-6000d324665f",
                  "partlabel": null,
                  "partuuid": "0d0e39b1-7943-4ce2-8248-2e1a52781918"
               },{
                  "name": "sda2",
                  "label": null,
                  "uuid": "cc628458-8f9a-4493-a645-27137cb4e53e",
                  "partlabel": null,
                  "partuuid": "2d1b397d-6ce1-470c-9723-5ec264bcc303"
               },{
                  "name": "sda3",
                  "label": null,
                  "uuid": "64963cdb-0cc2-4a4b-aeb0-72176a2f37b9",
                  "partlabel": null,
                  "partuuid": "f4eb5a86-7750-4b65-b2a2-d46d58ade17a"
               }
            ]
         },{
            "name": "sdb",
            "label": "Archive",
            "uuid": "38d919ee-5c81-4366-8d69-75cba480762b",
            "partlabel": null,
            "partuuid": null

                },{

                      "name": "sr0",
            "label": "Ubuntu 22.04.1 LTS amd64",
            "uuid": "2022-08-10-16-21-45-00",
            "partlabel": null,
            "partuuid": null
          }
       ]
   }

На первом устройстве (sda) используется таблица разделов GPT. На втором (sdb) — файловая система создана непосредственно на самом устройстве без таблицы разделов. Устройство sr0 — привод для оптических дисков с установочным диском Ubuntu.

Для того, чтобы найти файловую систему по метке, достаточно использовать запрос LABEL (или PARTLABEL, если метка раздела была задана при создании таблицы разделов GPT).

$ findfs "LABEL=Archive"
/dev/sdb
$ findfs "LABEL=Ubuntu 22.04.1 LTS amd64"
/dev/sr0

В первом случае помещение запроса в кавычки не обязательно, во втором — обязательно из-за пробелов в метке. Очевидно, что утилита нашла обе ФС, удовлетворяющие запросу.

Для поиска файловой системы по идентификатору следует использовать запрос UUID или PARTUUID (в случае использования таблицы разделов GPT):

$ findfs UUID=38d919ee-5c81-4366-8d69-75cba480762b
/dev/sdb
$ findfs UUID=2022-08-10-16-21-45-00
/dev/sr0
$ findfs PARTUUID=0d0e39b1-7943-4ce2-8248-2e1a52781918
/dev/sda1

В данном случае также все ФС были успешно обнаружены.