Comment lister les partitions d'un disque lorsqu'elles sont démontées ? Et comment les monter via le terminal ?
Réponses
Trop de publicités?Liste des partitions non montées
Pour résoudre le problème de la liste des partitions non montées, il y a plusieurs façons de procéder. lsblk
, fdisk
, parted
, blkid
.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 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 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b5321
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 234440703 117219328 83 Linux
Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk 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 / Solaris
Partition table entries are not in disk order
Disk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000
Disk /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: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 120GB 120GB primary ext4 boot
Model: ATA TOSHIBA MK2555GS (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number 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 hidden
Model: Linux device-mapper (thin-pool) (dm)
Disk /dev/mapper/docker-8:1-1589297-pool: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number 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"
$
On pourrait utiliser un peu de AWK
magie pour analyser la sortie de lsblk
pour lister toutes les partitions non montées :
$ 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
Ou alternativement :
$ lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk '$1~/[[:digit:]]/ && $2 == ""'
sdb1
sdb2
sdb3
sdb4
sdb5
Ce qui se passe exactement, c'est que nous dressons la liste de tous les
lignes dont la première colonne commence par la lettre s
(car c'est ainsi que les disques sont généralement nommés) et se terminant par un numéro (qui représente les partitions). Dans mon résultat précédent, vous pouvez voir que j'ai d'autres systèmes de fichiers, comme pour docker, donc dans la commande ci-dessus, nous nous débarrassons de tout ce qui n'est pas nécessaire.
Montage des cloisons
J'ai constaté que mount
peut être pointilleux : il doit connaître le système de fichiers exact, il doit être exécuté en tant que root, etc. udisksctl mount -b /dev/sXY
est une bien meilleure commande, qui peut être exécutée en tant qu'utilisateur normal, et qui monte automatiquement sur le serveur /media/$USER/
dossier. Par exemple,
$ udisksctl mount -b /dev/sdb5
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625.
Pour répondre à votre première question, courez :
sudo parted -l
S'ils sont montés normalement, il suffit de courir :
mount -a
Extrait de la page de manuel mount : La commande
mount -a [-t type] [-O optlist]
(généralement donnée dans un script de démarrage) entraîne tous les systèmes de fichiers mentionnés dans la rubrique fstab (du type approprié et/ou ayant ou non les options appropriées). ) seront montés comme indiqué, à l'exception de ceux dont la ligne contient le mot-clé noauto.
S'ils ne sont pas montés normalement, vous devez fournir les options de montage.
Je viens de créer un script basé sur les réponses données ici, dans ce cas je liste d'abord toutes les partitions non montées, puis je les monte à l'aide de udisksctl.
En final script se présentera comme suit :
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 {}
Ici,
lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'
produira sda sda1 ... sdb sdb1 ... sdc .... mais nous ne voulons pas sda elle-même, nous voulons sda1, sda2 ... Nous devons donc supprimer sda, sdb, sdc eux-mêmes,
Nous ajoutons donc le
grep -E "(/dev/sd.)[[:digit:]]"
pour ce faire.
Aujourd'hui, il produit sda1,sda2,...,sdb1,sdb2,... un peu mieux maintenant :)
et maintenant nous pouvons les monter un par un, en utilisant xargs comme ceci :
xargs -I{} -n1 udisksctl mount -b {}
- Réponses précédentes
- Plus de réponses