Как перечислить размонтированные разделы жесткого диска и смонтировать их?

Как вывести список разделов диска, когда они размонтированы? И как смонтировать их через терминал?

Список Размонтированных Разделов

Чтобы обратиться к списку части размонтированных разделов, существует несколько способов - lsblk, fdisk, parted, blkid.

$ lsblkNAME                             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda                                8:0    0 111.8G  0 disk └─sda1                             8:1    0 111.8G  0 part /sdb                                8:16   0 232.9G  0 disk ├─sdb1                             8:17   0   1.5G  0 part ├─sdb2                             8:18   0 138.6G  0 part /media/WINDOWS├─sdb3                             8:19   0   8.1G  0 part ├─sdb4                             8:20   0     1K  0 part ├─sdb5                             8:21   0  68.5G  0 part └─sdb6                             8:22   0   5.8G  0 part loop0                              7:0    0   100G  0 loop └─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   loop1                              7:1    0     2G  0 loop └─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   $ sudo fdisk -l[sudo] password for xieerqi: Disk /dev/sda: 120.0 GB, 120034123776 bytes255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000b5321   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *        2048   234440703   117219328   83  LinuxDisk /dev/sdb: 250.1 GB, 250059350016 bytes255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x96360d50   Device Boot      Start         End      Blocks   Id  System/dev/sdb1   *        2048     3074047     1536000   27  Hidden NTFS WinRE/dev/sdb2         3074048   293617502   145271727+   7  HPFS/NTFS/exFAT/dev/sdb3       471437312   488396799     8479744   17  Hidden HPFS/NTFS/dev/sdb4       293617662   471437311    88909825    5  Extended/dev/sdb5       315830272   459382783    71776256   83  Linux/dev/sdb6       459384832   471437311     6026240   82  Linux swap / SolarisPartition table entries are not in disk orderDisk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 65536 bytes / 65536 bytesDisk identifier: 0x00000000Disk /dev/mapper/docker-8:1-1589297-pool doesn't contain a valid partition table$ sudo parted -l                                                               [sudo] password for xieerqi: Model: ATA Radeon R7 (scsi)Disk /dev/sda: 120GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber  Start   End    Size   Type     File system  Flags 1      1049kB  120GB  120GB  primary  ext4         bootModel: ATA TOSHIBA MK2555GS (scsi)Disk /dev/sdb: 250GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber  Start   End     Size    Type      File system     Flags 1      1049kB  1574MB  1573MB  primary   ntfs            boot, diag 2      1574MB  150GB   149GB   primary   ntfs 4      150GB   241GB   91.0GB  extended 5      162GB   235GB   73.5GB  logical   ext4 6      235GB   241GB   6171MB  logical   linux-swap(v1) 3      241GB   250GB   8683MB  primary   ntfs            hiddenModel: Linux device-mapper (thin-pool) (dm)Disk /dev/mapper/docker-8:1-1589297-pool: 107GBSector size (logical/physical): 512B/512BPartition Table: loopNumber  Start  End    Size   File system  Flags 1      0.00B  107GB  107GB  ext4$ sudo blkid[sudo] password for xieerqi: /dev/sda1: UUID="86df21bf-d95f-435c-9292-273bdbcba056" TYPE="ext4" /dev/sdb1: LABEL="System" UUID="F4F688B2F68876A0" TYPE="ntfs" /dev/sdb2: LABEL="TI105866W0A" UUID="4EBAAE53BAAE36FD" TYPE="ntfs" /dev/sdb3: LABEL="HDDRECOVERY" UUID="BC4ED40D4ED3BDF8" TYPE="ntfs" /dev/sdb5: UUID="0ca7543a-5463-4a07-8bbe-233a7b0bd625" TYPE="ext4" /dev/sdb6: UUID="3a6e2270-19a2-49d7-aab3-5efb92d3b3d0" TYPE="swap" /dev/loop0: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" /dev/mapper/docker-8:1-1589297-pool: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" $ 

Можно было бы использовать немного AWK магия для анализа выходных данных lsblk чтобы перечислить все размонтированные разделы :

$ lsblk  --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""'              sdb1 8:17 0 1.5G 0 part sdb3 8:19 0 8.1G 0 part sdb4 8:20 0 1K 0 part sdb5 8:21 0 68.5G 0 part sdb6 8:22 0 5.8G 0 part

Или в качестве альтернативы:

$ lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk '$1~/[[:digit:]]/ && $2 == ""'                                       sdb1 sdb2 sdb3 sdb4 sdb5 

Что именно там происходит, так это то, что мы перечисляем все

строки, первый столбец которых начинается с буквы s (потому что именно так обычно называются диски) и заканчивающиеся числом (которые представляют разделы). В моем предыдущем выводе вы могли видеть, что у меня есть другие файловые системы, например, для docker, поэтому в приведенной выше команде мы избавляемся от всего ненужного.

Монтаж Перегородок

Я обнаружил, что mount может быть придирчивым: ему нужно знать точную файловую систему, его нужно запускать от имени root и т.д. udisksctl mount -b /dev/sXY это гораздо лучшая команда, может быть запущена как обычный пользователь и автоматически подключается к /media/$USER/ папка. Например,

$ udisksctl mount -b /dev/sdb5 Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625.

Это то, что я разработал для перечисления размонтированных томов:

lsblk  --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'

sudo blkid -o list

отобразится список всех смонтированных и размонтированных разделов. Кроме того, вы можете использовать mount и df чтобы увидеть все точки монтирования.

mount -t type device destination_dir

может использоваться для монтирования вашего устройства / раздела.

Чтобы ответить на ваш первый вопрос, выполните:

sudo parted -l

Если они нормально смонтированы, просто запустите:

mount -a

Со страницы руководства по монтированию: Команда

mount -a [-t тип] [-O список опций]

(обычно указывается в bootscript) приводит к тому, что все файловые системы, упомянутые в fstab (соответствующего типа и/или имеющие или не имеющие надлежащих параметров), монтируются, как указано, за исключением тех, строка которых содержит ключевое слово noauto.

Если они обычно не монтируются, вы должны предоставить опции для монтирования.

Я только что создал скрипт, основанный на ответах, которые люди сказали здесь, в этом случае я сначала перечисляю все размонтированные разделы, а затем монтирую их с помощью udisksctl.

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

lsblk  --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}' | grep -E "(/dev/sd.)[[:digit:]]" | xargs -I{} -n1 udisksctl mount -b {}

Здесь,

lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'

будет производить ПДД сда1 ... sdb sdb1 ... sdc .... но мы не хотим ПДД себя, мы хотим сда1, сда2 ... поэтому нам нужно удалить пдд, sdb, sdc самих себя,

итак, мы добавляем

grep -E "(/dev/sd.)[[:digit:]]"

раздел, как это сделать.

Теперь он производит sda1,sda2,...,sdb1,sdb2,... теперь вроде неплохо :)

и теперь мы можем монтировать их один за другим, используя xargs следующим образом:

xargs -I{} -n1 udisksctl mount -b {}

Вы также можете использовать,

blkid -c /dev/nul | awk -F: '{print $1}'

чтобы получить список всех смонтированных разделов, а затем использовать Lsblk чтобы проверить, каких из них не было в смонтированном списке.