У меня есть скрипт резервного копирования, который копирует некоторые данные на USB-устройство. Проблема в том, что OSX иногда меняет ожидаемый путь монтирования. Например, если какой-то файл заблокирован в ожидаемом пути монтирования, OSX монтирует его по другому пути. USB-устройство с именем 'BACKUP' можно смонтировать в /Volumes/BACKUP-1 вместо /Volumes/BACKUP.
Есть ли способ узнать текущий путь монтирования USB-устройства в терминале OSX? Что-то вроде 'mount_path BACKUP' (команда поддельная), которая затем вернет '/Volumes/BACKUP-1' или ничего, если устройство не было смонтировано?
решение1
Следующие команды показывают информацию о смонтированных томах:
- Хорошо известный Unix
mount
, показывающий, например,/dev/disk5s3
смонтированный в/Volumes/Foo
diskutil list
показывает обзор всех дисков и томовdiskutil info /dev/disk5s3
показывает информацию об этом томе, включая ,Volume UUID
которая может быть использована для уникальной идентификации этого тома.
Вы можете выполнить запрос, diskutil info
используя UUID тома:
$ diskutil info DEC8759E-F77D-3EAE-B3EB-B6438F1AA428 | grep 'Mount Point'
Mount Point: /Volumes/DroboOne
Пример вывода команды в моей системе:
$ 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
решение2
А как насчет этой команды:
df -lH | grep "Filesystem"; df -lH | grep "/Volumes/*"
В столбце «Смонтировано на» вы увидите все точки монтирования всех устройств, смонтированных на "/Volumes"
, которые в моем случае почти всегда являются USB-устройствами ;-)
Команды grep
по сути пропускают жесткий диск, на котором он смонтирован "/"
.
В терминале моей OSX Snow Leopard я использую его для быстрого обзора точек монтирования моих подключенных в данный момент USB-устройств. Если вас интересуют только точки монтирования, а не все остальные параметры, такие как UUID и т. д., это, по моему мнению, более прямой путь, чем "diskutil"
со всей его информацией.
решение3
Я извлекаю его в переменную:
media=\`df | grep "media" | awk '{print $6}'\`
или
media=$(df | awk '/media/ {print $6}')
Команда df
выводит список разделов, а полученный вывод передается в качестве входных данных команде grep, которая фильтрует и сохраняет только строки, содержащие слово media, которые затем передаются в команду, awk
которая сохраняет только 6-й столбец своего однострочного ввода.
решение4
Просто старый добрый diskutil
. Это не Linux, где вы, вероятно, можете заглянуть в /sys или что-то в этом роде.
diskutil info "$VolumeName" | grep "Mount Point" | tr " " "\n" | tail -1