OSX에서 USB 장치의 마운트 경로를 얻으려면 어떻게해야합니까?


58

일부 데이터를 USB 장치에 백업하는 백업 스크립트가 있습니다. 내가 가진 문제는 OSX가 때때로 예상 마운트 경로를 변경한다는 것입니다. 예를 들어, 일부 파일이 예상 마운트 경로 아래에 잠겨 있으면 OSX는 파일을 다른 경로에 마운트합니다. 'BACKUP'이라는 USB 장치를 / Volumes / BACKUP 대신 / Volumes / BACKUP-1에 마운트 할 수 있습니다.

OSX 터미널에서 USB 장치의 현재 마운트 경로를 찾는 방법이 있습니까? 'mount_path BACKUP'(명령은 가짜)과 같은 것이 있는데 '/ Volumes / BACKUP-1'을 반환하거나 장치가 마운트되지 않은 경우 아무것도 반환하지 않습니까?

답변:


68

다음 명령은 마운트 된 볼륨에 대한 정보를 보여줍니다.

  • 잘 알려진 유닉스 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

나는 그 명령을 사용하고 이것을 통해 내 길을 파싱하지 않기를 바랐다. :) 다른 방법이 없다면, 당신을 위해 이것을하는 bash 함수를 알고 있습니까?
xastor

@xastor 관련 정보가 추가되었습니다. man diskutil도움이 될 것입니다.
Daniel Beck

고마워, 나는 지금 스크립트를 작성하고 작동합니다. 나는 다른 방법이 있기를 바랐다. 나는 질문에서 그것을 언급해야했다. 예를 들어, 다른 언어의 OSX 시스템에서는 어떻게됩니까? 내가 생각하는 프랑스 시스템에서 '마운트 볼륨'을
잡을

@xastor diskutil가 현지화되지 않았습니다.
Daniel Beck

1
이것은 신뢰할 수있는 솔루션입니다. 감사합니다!
xastor

10

이 명령은 어떻습니까?

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

"Mounted on"열에서 마운트 된 모든 장치의 모든 마운트 지점을 얻 "/Volumes"습니다. 필자의 경우 거의 항상 USB 장치입니다.

grep명령은 기본적으로 장착되어있는 하드 드라이브를 건너 뜁니다 "/".

OSX Snow Leopard의 터미널에서 현재 연결된 USB 장치의 마운트 지점을 간략하게 설명하는 데 사용합니다. 마운트 포인트에만 관심이 있고 UUID 등과 같은 다른 모든 매개 변수가 아니라면, 이것은 "diskutil"모든 정보가 아닌보다 직접적인 방법이라고 생각합니다 .


2

변수에서 검색합니다.

media=\`df | grep "media" | awk '{print $6}'\`

또는

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

df명령은 파티션을 나열하고 결과 출력은 grep 명령의 입력으로 파이프되고 단어 media를 포함하는 행만 필터링하고 유지 한 다음 awk한 행 입력의 6 번째 열만 유지하는 명령으로 파이프됩니다 .


두 번째 형식은 훨씬 선호되어야하지만 /media/정규 표현식 을 전달하는 방법은 명확하지 않습니다 . 시도 media=$(df | awk -v regex="$regex" '$1 ~ regex { print $6 }')쉘 변수에 전달하는 $regex검색 할 수있는 일이있다.
tripleee

1

그냥 좋은 오래된 diskutil. 이것은 리눅스가 아니며, 아마도 / sys 또는 무언가를 들여다 볼 수 있습니다.

diskutil info "$VolumeName" | grep "Mount Point" | tr " " "\n" | tail -1

0

1
그리고 어떻게 당신이 사용하는 것이 fstab정확히 이것에 대한?
Daniel Beck

USB 드라이브의 UUId를 가져 와서 마운트 지점을 생성하고 모든 것을 / etc / fstab에 제공합니다. 위에서 언급 한 USB 드라이브가 연결될 때마다 해당 UUID가 인식하는 해당 마운트 지점에 마운트됩니다.
dag729

사용자의 문제는 이미 사용중인 기본 마운트 지점에서 비롯된 것입니다.
Daniel Beck

이것이 제가 의미 한 바입니다 : / etc / fstab을 사용하여 OS에 마운트 지점을 제공합니다. 그때부터 시스템은 / etc / fstab을 읽고 연관된 마운트 지점이있는 UUID가있는 것을 발견하고 기본 위치 대신이를 사용합니다.
dag729

0

이 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';

이것은 지난 9 월에 아직 아무도 언급하지 않았습니까? 이 스크립트가 의견에서 말하는 것을 수행하려면 '마운트 포인트'가 대신 '디바이스 노드'여야합니다.

1
@Blakat 장치 노드가 OP가 요청한 것이 아닙니다. 마운트 포인트는 /Volumes/…이 질문을 올바르게 읽으면 모든 사람들이 이야기 한 것입니다.
slhck

sed어쨌든 당신이 사용한다면 , grepcut쓸모없습니다 . diskutil info "$1" | sed -n '/^ *Mount Point: */!d;s///;s/ *$//p'
tripleee

0

이것이 OS X의 쉘 스크립트에서 사용하는 것입니다.

df | awk '{print $6}' | grep -Ex "/Volumes/myvolume"

이것이 어떻게 작동하는지 설명하기 위해 몇 문장을 추가 할 수 있습니까? 감사.
fixer1234

이 방법은 df | awk '$6 == "/Volumes/myvolume" { print $6 }'볼륨 경로를 정확히 예상 한 경우 인쇄하는 방법입니다 . grep -E플래그는 여기에 불필요하고는 grep쓸모가 awk는 이미 정규 표현식과 일치하는 방법을 아주 잘 알고 있기 때문에.
tripleee

더 유용한 명령은 아마도 볼륨 grep을 것이다 전에 단지 여섯 번째 필드를 인쇄, 또는 더 나은 최초의 변경 $6에를 $1내 이전의 코멘트에.
tripleee

-1

이것은 더 잘 작동 할 수 있습니다 :

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

6
더 잘 작동합니까?
bertieb

데니스, 슈퍼 유저에 오신 것을 환영합니다. 다른 몇 가지 대답은 좋은 예는 아니지만 대답의 목표는 잘라 내기 및 붙여 넣기 코드를 제공하는 대신 교육하는 것입니다. 나는 코더가 아니므로 솔루션의 우수성을 해결할 수는 없지만 bertieb의 의견과 아마도 공언이 의심되는 것은 솔루션의 품질이 아니라 설명 할 수없는 코드라는 사실로 이동하십시오. 이것이 무엇을하는지 설명하기 위해 몇 문장을 추가 할 수 있습니까? 그리고 비교하는 것보다 더 나은 해결책은 무엇입니까? 감사.
fixer1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.