OSXでUSBデバイスのマウントパスを取得するにはどうすればよいですか?


58

一部のデータをUSBデバイスにバックアップするバックアップスクリプトがあります。私が抱えている問題は、OSXが予想されるマウントパスを変更することがあるということです。たとえば、あるファイルが予想されるマウントパスでロックされている場合、OSXはそのファイルを別のパスにマウントします。「BACKUP」という名前のUSBデバイスは、/ Volumes / BACKUPの代わりに/ Volumes / BACKUP-1にマウントできます。

OSXターミナルでUSBデバイスの現在のマウントパスを確認する方法はありますか?デバイスがマウントされていない場合、「/ Volumes / BACKUP-1」または何も返さない「mount_path BACKUP」(コマンドは偽)のようなものですか?

回答:


68

次のコマンドは、マウントされたボリュームに関する情報を表示します。

  • よく知られているの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

私はそれらのコマンドを使用してこれを分析することを避けたいと思っていました:)しかし、他に方法がない場合、これを行うbash関数を知っていますか?
クアスター

@xastor関連情報を追加しました。man diskutil助けていただろう。
ダニエルベック

おかげで、私は今スクリプトを書いて、それは動作します。私は別の方法があることを望んでいましたが、質問でそれを言及すべきでした。たとえば、別の言語のOSXシステムではどうなりますか?フランスのシステムで「マウントボリューム」をgrepできません
。.-xastor

@xastor diskutilはローカライズされていません。
ダニエルベック

1
これは信頼できるソリューションです。ありがとうございました!
xastor

10

このコマンドはどうですか:

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

「マウントされた」列には、マウントされたすべてのデバイスのすべてのマウントポイントが表示されます"/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コマンドへの入力としてパイプさawkだけ、その一行入力の6列を保持するコマンド。


2番目の形式がはるかに望ましいはずですが、/media/パラメータ化された正規表現を渡す方法は明らかではありません。検索対象としてmedia=$(df | awk -v regex="$regex" '$1 ~ regex { print $6 }')シェル変数を渡してみてください$regex
トリプリー

1

ただ古き良きdiskutil。これはLinuxではなく、おそらく/ sysなどを覗くことができます。

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

0

これにはfstabを使用します。このトピックに関するスレッドは、Super Userにあります:Mac Lion:fstabは非推奨です。パーティションのマウントを防ぐために何を置き換えますか?


1
そして、これに正確にどのように使用fstabしますか?
ダニエルベック

USBドライブのUUIdを取得し、マウントポイントを作成して、すべてを/ etc / fstabに渡します。前述のUSBドライブが接続されるたびに、UUIDによって認識されるそのマウントポイントにマウントされます。
dag729

ユーザーの問題は、すでに使用されているデフォルトのマウントポイントに起因することに注意してください。
ダニエルベック

つまり、/ 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'
トリプリー

0

これは、OS Xのシェルスクリプトで使用するものです

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

これがどのように機能するかを説明するためにいくつかの文を追加できますか?ありがとう。
fixer1234

これはdf | awk '$6 == "/Volumes/myvolume" { print $6 }'、ボリュームパスが正確に予想されたものである場合にそれを印刷するという言い回しの方法です。grep -Eフラグは、ここに不必要であるとgrep役に立たない awkがすでに正規表現に一致する方法を非常によく知っているので。
トリプリー

6番めのフィールドのみを印刷する前に、ボリュームのgrepを使用するより便利なコマンドを使用するか、前のコメントの最初のフィールドをに変更する$6こと$1をお勧めします。
トリプリー

-1

これはもっとうまくいくかもしれません:

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

6
なぜそれがうまくいくのでしょうか?
-bertieb

デニス、スーパーユーザーへようこそ。他のいくつかの答えは良い例ではありませんが、答えの目標は、単にカットアンドペーストコードを提供するのではなく、教育することです。私はコーダーではないので、あなたのソリューションがどれほど優れているかについては説明できませんが、私はベルティエブのコメント、そしておそらくは投票権を失い、これはソリューションの質よりも説明されていないコードであるという事実に行き着きます。これが何をするのかを説明するためにいくつかの文章を追加できますか?また、何を比較した場合よりも優れたソリューションになりますか?ありがとう。
fixer1234
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.