Eu tenho um script de backup que faz backup de alguns dados em um dispositivo USB. O problema que tenho é que o OSX às vezes altera o caminho de montagem esperado. Por exemplo, se algum arquivo estiver bloqueado no caminho de montagem esperado, o OSX o monta em outro caminho. Um dispositivo USB chamado 'BACKUP' pode ser montado em /Volumes/BACKUP-1 em vez de /Volumes/BACKUP.
Existe uma maneira de descobrir o caminho de montagem atual de um dispositivo USB no Terminal OSX? Algo como 'mount_path BACKUP' (o comando é falso) que retornaria '/Volumes/BACKUP-1' ou nada se o dispositivo não estivesse montado?
Responder1
Os comandos a seguir mostram 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 volumesdiskutil info /dev/disk5s3
mostra informações sobre esse volume, incluindo umVolume UUID
arquivo que pode ser usado para identificar exclusivamente esse volume.
Você pode consultar diskutil info
usando o UUID do volume:
$ diskutil info DEC8759E-F77D-3EAE-B3EB-B6438F1AA428 | grep 'Mount Point'
Mount Point: /Volumes/DroboOne
Exemplo de saída de comando em 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
Responder2
E este comando:
df -lH | grep "Filesystem"; df -lH | grep "/Volumes/*"
Na coluna "Montado em" você obtém todos os pontos de montagem de todos os dispositivos montados "/Volumes"
, que no meu caso são quase sempre dispositivos USB ;-)
Os grep
comandos basicamente ignoram o disco rígido montado no "/"
.
No terminal do meu OSX Snow Leopard, eu o uso para uma rápida visão geral dos pontos de montagem dos meus dispositivos USB atualmente conectados. Se você está interessado apenas em pontos de montagem e não em todos os outros parâmetros como UUID etc., esta seria, na minha opinião, a maneira mais direta do que "diskutil"
com todas as suas informações.
Responder3
Eu o recupero em uma variável:
media=\`df | grep "media" | awk '{print $6}'\`
ou
media=$(df | awk '/media/ {print $6}')
O df
comando lista as partições, a saída resultante é canalizada como entrada para o comando grep que filtra e mantém apenas as linhas que contêm a palavra media, que é então canalizada para o awk
comando que mantém apenas a 6ª coluna de sua entrada de uma linha.
Responder4
Apenas o bom e velho diskutil
. Este não é o Linux, onde você provavelmente pode dar uma espiada em /sys ou algo assim.
diskutil info "$VolumeName" | grep "Mount Point" | tr " " "\n" | tail -1