2012-05-26 09:09:09 +0000 2012-05-26 09:09:09 +0000
61
61

Como posso obter o caminho de montagem de um dispositivo USB no OSX?

Tenho um script de backup que faz o backup de alguns dados para um dispositivo USB. O problema que tenho é que o OSX por vezes altera o caminho de montagem esperado. Por exemplo, se algum ficheiro estiver bloqueado sob o caminho de montagem esperado, o OSX monta-o noutro caminho. Um dispositivo USB chamado ‘BACKUP’ pode ser montado em /Volumes/BACKUP-1 em vez de /Volumes/BACKUP-1.

Existe alguma forma de descobrir o caminho de montagem actual de um dispositivo USB no Terminal OSX? Algo como ‘mount_path BACKUP’ (o comando é falso) que depois retornaria ‘/Volumes/BACKUP-1’ ou nada se o dispositivo não estivesse montado?

Ответы (8)

72
72
72
2012-05-26 09:56:13 +0000

Os comandos seguintes mostram-lhe informações sobre volumes montados:

& - O conhecido Unix mount, mostrando por exemplo /dev/disk5s3 montado em /Volumes/Foo - diskutil list mostra uma visão geral de todos os discos e volumes - diskutil info /dev/disk5s3 mostra informação sobre esse volume, incluindo um Volume UUID que pode ser utilizado para identificar de forma única esse volume.

Pode consultar diskutil info usando o UUID do volume:

$ diskutil info DEC8759E-F77D-3EAE-B3EB-B6438F1AA428 | grep 'Mount Point'
   Mount Point: /Volumes/DroboOne

Saída de comando de amostra no meu sistema:

$ mount
/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
localhost:/bNqIvVr1ZdFBdf19Io81Q4 on /Volumes/MobileBackups (mtmfs, nosuid, read-only, nobrowse)
/dev/disk4 on /Volumes/MyBook (hfs, local, nodev, nosuid, journaled)
/dev/disk5s3 on /Volumes/DroboOne (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk7s3 on /Volumes/DroboTwo (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk6s3 on /Volumes/DroboThree (hfs, local, nodev, nosuid, journaled, noowners)

$ diskutil list
/dev/disk0
   #: TYPE NAME SIZE IDENTIFIER
   0: GUID_partition_scheme *256.1 GB disk0
   1: EFI 209.7 MB disk0s1
   2: Apple_CoreStorage 240.0 GB disk0s2
   3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_HFS Servus10 HD *239.7 GB disk1
/dev/disk2
   #: TYPE NAME SIZE IDENTIFIER
   0: GUID_partition_scheme *3.0 TB disk2
   1: EFI 209.7 MB disk2s1
   2: Apple_CoreStorage 3.0 TB disk2s2
   3: Apple_Boot Boot OS X 134.2 MB disk2s3
/dev/disk4
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_HFS MyBook *3.0 TB disk4
/dev/disk5
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_partition_scheme *2.2 TB disk5
   1: Apple_partition_map 32.3 KB disk5s1
   2: Apple_HFS DroboOne 2.2 TB disk5s3
/dev/disk6
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_partition_scheme *2.2 TB disk6
   1: Apple_partition_map 32.3 KB disk6s1
   2: Apple_HFS DroboThree 2.2 TB disk6s3
/dev/disk7
   #: TYPE NAME SIZE IDENTIFIER
   0: Apple_partition_scheme *2.2 TB disk7
   1: Apple_partition_map 32.3 KB disk7s1
   2: Apple_HFS DroboTwo 2.2 TB disk7s3

$ diskutil info /dev/disk5s3
   Device Identifier: disk5s3
   Device Node: /dev/disk5s3
   Part of Whole: disk5
   Device / Media Name: Untitled

   Volume Name: DroboOne
   Escaped with Unicode: DroboOne

   Mounted: Yes
   Mount Point: /Volumes/DroboOne
   Escaped with Unicode: /Volumes/DroboOne

   File System Personality: Journaled HFS+
   Type (Bundle): hfs
   Name (User Visible): Mac OS Extended (Journaled)
   Journal: Journal size 172032 KB at offset 0x4001000
   Owners: Disabled

   Partition Type: Apple_HFS
   OS Can Be Installed: No
   Media Type: Generic
   Protocol: FireWire
   SMART Status: Not Supported
   Volume UUID: DEC8759E-F77D-3EAE-B3EB-B6438F1AA428

   Total Size: 2.2 TB (2198888927232 Bytes) (exactly 4294704936 512-Byte-Blocks)
   Volume Free Space: 169.4 GB (169412173824 Bytes) (exactly 330883152 512-Byte-Blocks)
   Device Block Size: 512 Bytes

   Read-Only Media: No
   Read-Only Volume: No
   Ejectable: Yes

   Whole: No
   Internal: No
``` * * * 
0x1&
10
10
10
2012-10-26 20:32:46 +0000

E quanto a este comando?

df -lH | grep "Filesystem"; df -lH | grep "/Volumes/*"

Na coluna “Montado em” obtém todos os Pontos de Montagem de todos os dispositivos montados em "/Volumes", que no meu caso são quase sempre dispositivos USB ;-)

Os comandos grep saltam basicamente o disco rígido que está montado no "/".

No terminal do meu OSX Snow Leopard, utilizo-o para uma rápida visão geral dos Pontos de Montagem dos meus dispositivos USB actualmente ligados. Se estiver apenas interessado nos Mount Points e não em todos os outros parâmetros como UUID etc., isto seria na minha opinião a forma mais directa em vez de "diskutil" com toda a sua informação.

2
2
2
2015-12-29 11:14:55 +0000

Recupero-a numa variável:

media=Recupero-a numa variável: 


df | grep "media" | awk '{print $6}'Recupero-a numa variável: 



media=$(df | awk '/media/ {print $6}')

O comando df lista as partições, a saída resultante é canalizada como entrada para o comando grep que filtra e mantém apenas as linhas contendo a palavra media, que é então canalizada para o comando awk que mantém apenas a 6ª coluna da sua entrada de uma linha.

1
1
1
2019-05-11 12:18:33 +0000

Apenas os bons velhos diskutil. Isto não é Linux, onde provavelmente se pode espreitar a /sys ou algo parecido.

diskutil info "$VolumeName" | grep "Mount Point" | tr " " "\n" | tail -1
0
0
0
2015-02-25 15:53:57 +0000

Isto é o que eu uso nos meus scripts shell em OS X

df | awk '{print $6}' | grep -Ex "/Volumes/myvolume"
0
0
0
2012-05-26 12:33:15 +0000

Para tal, utilizaria apenas o fstab. Há aqui um tópico relacionado com este tópico no Super User: Mac Lion: fstab é depreciado. então o que o substitui para impedir a montagem de uma partição?

0
0
0
2012-09-26 09:25:39 +0000

Acabei por usar este guião bash :

#!/bin/sh
#
# Retrieves the mount point of an OSX volume name or UUID.
# @param $1 Name of the volume or UUID of the volume.
# @return returns the mount path or an empty string if the volume is not mounted. 
#
diskutil info $1 | grep 'Mount Point' | cut -d : -f 2 | sed 's/^ *//g' | sed 's/ *$//g';
-1
-1
-1
2017-04-27 13:40:38 +0000

Isto pode funcionar melhor:

df -lH | grep -E "*putinyourvolumelabel*$" | awk '{print $1}''