আমি কীভাবে ওএসএক্সে একটি ইউএসবি ডিভাইসের মাউন্ট পাথ পেতে পারি?


58

আমার কাছে একটি ব্যাকআপ স্ক্রিপ্ট রয়েছে যা কোনও ইউএসবি ডিভাইসে কিছু ডেটা ব্যাক আপ করে। আমার সমস্যাটি হ'ল ওএসএক্স কখনও কখনও প্রত্যাশিত মাউন্ট প্যাথ পরিবর্তন করে। উদাহরণস্বরূপ যদি কোনও ফাইল প্রত্যাশিত মাউন্ট পাথের আওতায় লক করা থাকে তবে ওএসএক্স এটিকে অন্য পথে মাউন্ট করে। 'ব্যাকআপ' নামের একটি ইউএসবি ডিভাইস / ভলিউম / ব্যাকআপের পরিবর্তে / ভলিউম / ব্যাকআপ -১ এ মাউন্ট করা যায়।

ওএসএক্স টার্মিনালে কোনও ইউএসবি ডিভাইসের বর্তমান মাউন্ট পাথ সন্ধান করার কোনও উপায় আছে কি? 'মাউন্ট_পথ ব্যাকআপ' (কমান্ডটি নকল) এর মতো কিছু যা এরপরে ফিরে আসবে '/ খণ্ডগুলি / ব্যাকআপ -১' বা ডিভাইসটি মাউন্ট করা না থাকলে কিছুই না?

উত্তর:


68

নিম্নলিখিত কমান্ডগুলি আপনাকে মাউন্ট করা ভলিউম সম্পর্কে তথ্য প্রদর্শন করবে:

  • সুপরিচিত ইউনিক্স mount, উদাহরণস্বরূপ /dev/disk5s3মাউন্ট করা রয়েছে showing/Volumes/Foo
  • diskutil list সমস্ত ডিস্ক এবং ভলিউম একটি ওভারভিউ দেখায়
  • diskutil info /dev/disk5s3সেই ভলিউমটি সম্পর্কিত তথ্য দেখায়, যা একটি Volume UUIDভলিউম স্বতন্ত্রভাবে সনাক্ত করতে ব্যবহৃত হতে পারে including

আপনি diskutil infoভলিউমের ইউআইডি ব্যবহার করে জিজ্ঞাসা করতে পারেন :

$ 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

আমি এই কমান্ডগুলি ব্যবহার না করে এবং এর মাধ্যমে আমার পথটি বিশ্লেষণ করা এড়াতে চাইব :)
xastor

@ এক্সস্টর প্রাসঙ্গিক তথ্য যুক্ত করেছেন। man diskutilসাহায্য করতেন।
ড্যানিয়েল অঙ্গুলিনির্দেশ

ধন্যবাদ, আমি এখন একটি স্ক্রিপ্ট লিখেছি এবং এটি কার্যকর হয়। আমি আশা করছিলাম যে অন্য কোনও উপায় থাকলেও, আমার প্রশ্নের মধ্যে এটি উল্লেখ করা উচিত ছিল। উদাহরণস্বরূপ, অন্য ভাষার সাথে একটি ওএসএক্স সিস্টেমে কী ঘটে? আমি মনে করি ফরাসি সিস্টেমে আমি 'মাউন্ট ভলিউম'
গ্রেপ

@ এক্সটার diskutilস্থানীয় নয়।
ড্যানিয়েল বেক

1
এটি তখন নির্ভরযোগ্য সমাধান। ধন্যবাদ!
xastor

10

এই আদেশ সম্পর্কে কি:

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

"মাউন্ট করা" কলামে আপনি সমস্ত ডিভাইসগুলির মাউন্ট পয়েন্টগুলি মাউন্ট করেছেন "/Volumes"যা আমার ক্ষেত্রে প্রায় সবসময় ইউএসবি ডিভাইস ;-)

grepকমান্ড মূলত হার্ড ড্রাইভ যার উপর মাউন্ট করা লাফালাফি "/"

আমার ওএসএক্স স্নো চিতাবাঘের টার্মিনালে আমি এটি বর্তমানে যুক্ত ইউএসবি ডিভাইসগুলির মাউন্ট পয়েন্টগুলির দ্রুত পর্যালোচনার জন্য ব্যবহার করি use আপনি যদি কেবল মাউন্ট পয়েন্টগুলিতে আগ্রহী হন এবং ইউইউডি ইত্যাদি হিসাবে অন্যান্য সমস্ত পরামিতিগুলি না করে থাকেন তবে এটি আমার সমস্ত মতামত না করে আরও সোজাসুজিভাবে এগিয়ে যেতে "diskutil"হবে।


2

আমি এটি একটি পরিবর্তনশীল পুনরুদ্ধার:

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

অথবা

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

dfকমান্ড তালিকা পার্টিশন, ফলে আউটপুট grep কমান্ড প্রয়োগ যা ফিল্টার এবং শুধুমাত্র শব্দ মিডিয়া, যা পরে জন্য বাঁশি বাজালাম হয় ধারণকারী লাইন রাখে ইনপুট হিসাবে পাইপ হয় awkকমান্ড যা শুধুমাত্র তার এক লাইন ইনপুট 6 ষ্ঠ কলাম রাখে।


দ্বিতীয় ফর্মটি অনেক বেশি পছন্দ করা উচিত, তবে কীভাবে /media/রেজেক্স প্যারামেট্রাইজড হয়ে যায় তা স্পষ্ট নয় । media=$(df | awk -v regex="$regex" '$1 ~ regex { print $6 }')শেল ভেরিয়েবলটি $regexঅনুসন্ধান করার জিনিস হিসাবে পাস করার চেষ্টা করুন ।
ট্রিপলি

1

শুধু ভাল পুরানো diskutil। এটি লিনাক্স নয়, যেখানে আপনি সম্ভবত / সিস বা কোনও কিছুতে উঁকি দিতে পারেন।

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

0

আমি এটির জন্য কেবল fstab ব্যবহার করব। সুপার ইউজার: ম্যাক লায়ন: এফএসটিএব অবমূল্যায়িত হয়েছে এখানে এই বিষয় সম্পর্কিত একটি থ্রেড রয়েছে । সুতরাং এটির পরিবর্তে কোন পার্টিশনকে মাউন্ট থেকে আটকাতে পারে?


1
এবং আপনি এই জন্য ঠিক কিভাবে ব্যবহার fstabকরবেন?
ড্যানিয়েল বেক

ইউএসবি ড্রাইভের ইউইউআইডি নেওয়া, একটি মাউন্ট পয়েন্ট তৈরি করে এবং এগুলি সমস্ত / etc / fstabকে দেওয়া। যখনই পূর্বোক্ত ইউএসবি ড্রাইভ সংযুক্ত থাকে, তখন তার ইউইউডি দ্বারা স্বীকৃত সেই মাউন্ট পয়েন্টে মাউন্ট করা হবে।
dag729

নোট করুন যে ব্যবহারকারীর সমস্যাটি ইতিমধ্যে ব্যবহৃত হওয়ার কারণে পূর্বনির্ধারিত মাউন্ট পয়েন্ট থেকে এসেছে।
ড্যানিয়েল বেক

এটাই আমি বোঝাতে চাইছিলাম: / etc / fstab ব্যবহার করে ওএসকে একটি মাউন্ট পয়েন্ট দেওয়া। সেই সময় থেকে, সিস্টেমটি / etc / fstab পড়বে, সন্ধান করবে যে কোনও যুক্ত মাউন্ট পয়েন্টের সাথে একটি ইউআইডি আছে, এবং এটি ডিফল্টর পরিবর্তে এটি ব্যবহার করবে।
dag729

0

আমি এই ব্যাশ স্ক্রিপ্টটি ব্যবহার করে শেষ করেছি:

#!/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
@ ব্লাক্যাট ডিভাইস নোড ওপি যা চেয়েছিল তা নয়। মাউন্ট পয়েন্টটি হ'ল /Volumes/…, আমি যদি এই প্রশ্নটি সঠিকভাবে পড়ি তবে প্রত্যেকেই সেই বিষয়ে কথা বলছিল।
ছোঁয়া

আপনি ব্যবহার করে থাকেন sedযাহাই হউক না কেন, grepএবং The cutহয় বেহুদা ; diskutil info "$1" | sed -n '/^ *Mount Point: */!d;s///;s/ *$//p'
ট্রিপলি

0

ওএস এক্স-এ আমার শেল স্ক্রিপ্টগুলিতে আমি এটি ব্যবহার করি

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

এটি কীভাবে কাজ করে তা বোঝাতে আপনি কয়েকটি বাক্য যুক্ত করতে পারেন? ধন্যবাদ।
ফিক্সার 1234

এটি বলার এক চক্রাকার df | awk '$6 == "/Volumes/myvolume" { print $6 }'অর্থ হ'ল এটি যদি প্রত্যাশিত হয় তবে ভলিউম পাথটি মুদ্রণ করুন। grep -Eপতাকা এখানে অতিরিক্ত এবং grepঅনর্থক কারণ awk ইতিমধ্যে বেশ ভাল জানেন কিভাবে একটি রেগুলার এক্সপ্রেশন মেলে।
ট্রিপলি

আরো একটি দরকারী কমান্ড সম্ভবত ভলিউমের জন্য grep হবে আগে শুধুমাত্র ষষ্ঠ ক্ষেত্র মুদ্রণ, অথবা এমনকি ভাল প্রথম পরিবর্তন $6করতে $1আমার আগের মন্তব্যে।
ট্রিপলি

-1

এটি আরও ভাল কাজ করতে পারে:

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

6
কেন যে কাজ আরও ভাল হতে পারে?
বারটিয়েব

ডেনিস, সুপার ব্যবহারকারীকে স্বাগতম। অন্যান্য উত্তরগুলির কয়েকটি দু'টি ভাল উদাহরণ নয়, তবে উত্তরের লক্ষ্যটি কেবল কাটা এবং পেস্ট কোড সরবরাহ করার চেয়ে শিক্ষিত করা। আমি কোনও কোডার নই, সুতরাং আপনার সমাধানটি কতটা ভাল হতে পারে তা আমি সম্বোধন করতে পারছি না তবে আমি বার্টিয়েবের মন্তব্য এবং সম্ভবত ডাউনভোটকে সন্দেহ করেছি যে সমাধানের মানের চেয়ে বরং এটি কেবল অব্যক্ত কোড code এটি কী করে তা ব্যাখ্যা করার জন্য আপনি কয়েকটি বাক্য যুক্ত করতে পারেন এবং আপনি যেটির সাথে তুলনা করছেন তার থেকে এটি কী আরও ভাল সমাধান করে? ধন্যবাদ।
ফিক্সার 1234
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.