macOS是蘋(píng)果公司個(gè)人電腦操作系統(tǒng),由于未知的原因,macOS沒(méi)有給默認(rèn)的用戶(hù)提供NTFS文件系統(tǒng)的寫(xiě)入權(quán)限,當(dāng)用戶(hù)將包含NTFS格式分區(qū)的磁盤(pán)連接電腦主機(jī)后,macOS默認(rèn)以“只讀”的方式掛載,為用戶(hù)提供最基本的文件讀取服務(wù)。因此,很多第三方公司開(kāi)發(fā)了收費(fèi)應(yīng)用,實(shí)現(xiàn)macOS中對(duì)NTFS文件系統(tǒng)的寫(xiě)入功能。例如NTFS for Mac這款軟件,就可以實(shí)現(xiàn)和操作系統(tǒng)無(wú)縫結(jié)合,當(dāng)用戶(hù)插入包含NTFS分區(qū)格式的磁盤(pán)后,可以自動(dòng)使用“讀寫(xiě)”的模式掛載磁盤(pán)分區(qū)。
相比收費(fèi)的商業(yè)軟件,macOS操作系統(tǒng)原生提供了NTFS格式分區(qū)讀寫(xiě)功能,不過(guò)因其具體操作比較繁瑣,不便于日常應(yīng)用。筆者利用bash腳本編程技術(shù),提出了一種使用腳本命令的方式,可以快速方便地將NTFS格式分區(qū)以“讀寫(xiě)”模式掛載和卸載的解決方案,將macOS原生對(duì)NTFS支持的特性和簡(jiǎn)便易操作的特性完美結(jié)合。以下將詳細(xì)介紹實(shí)現(xiàn)原理和基本實(shí)現(xiàn)應(yīng)用。
macOS操作系統(tǒng)對(duì)移動(dòng)存儲(chǔ)設(shè)備采用了類(lèi)似Unix系統(tǒng)的處理方式,當(dāng)移動(dòng)設(shè)備物理上連接后,需要先掛載(可以使用控制臺(tái)中的mount命令實(shí)現(xiàn))到現(xiàn)有的文件系統(tǒng)目錄樹(shù)上才能訪問(wèn)使用。默認(rèn)macOS對(duì)NTFS的掛載是“只讀”,而實(shí)際上macOS操作系統(tǒng)提供了完善的NTFS格式分區(qū)的訪問(wèn),因此只要重新采用“讀寫(xiě)”模式將NTFS卷掛載,就可以實(shí)現(xiàn)NTFS格式分區(qū)的寫(xiě)入。macOS控制臺(tái)環(huán)境中提供了mount和umount命令實(shí)現(xiàn)“掛載”和“卸載”各種分區(qū)格式。
以上大多數(shù)的參數(shù)在本文中不需要特別設(shè)置,主要需要關(guān)注以下參數(shù):
-o options:option 是掛載參數(shù),這里需要使用rw,nobrowser參數(shù)實(shí)現(xiàn)讀寫(xiě)掛載,并且使用nobrowser參數(shù)才能生效。
-t external_type:external_type是需要掛載的文件系統(tǒng)類(lèi)型,這里使用ntfs作為參數(shù)掛載NTFS文件系統(tǒng)卷。
special:用于指定設(shè)備文件,例如 /dev/disk2s1。
mount_point:指 定 文件系統(tǒng)掛載的位置,如~/Desktop/hello。
對(duì)照以上的命令調(diào)用 格 式,sudo mount -o rw,nobrowse -t ntfs /dev/disk2s1 ~/Desktop/udisk可以實(shí)現(xiàn)將disk2s1文件分區(qū)按照ntfs文件分區(qū)格式以讀寫(xiě)模式掛載到桌面的udisk文件夾中。
注意:由于掛載磁盤(pán)操作需要管理員權(quán)限,因此一般使用sudo提升權(quán)限。
另外,由于macOS環(huán)境中umount卸載磁盤(pán)分區(qū)功能沒(méi)有diskutil umount功能的穩(wěn)定性好,本文腳本中也采用了diskutil umount代替了mount命令。
以上代碼中,Devices變量用語(yǔ)保存系統(tǒng)中只讀的文件系統(tǒng)的掛載設(shè)備名,也就是當(dāng)一個(gè)NTFS卷被macOS系統(tǒng)默認(rèn)掛載的設(shè)備。腳本接受mount和umount兩種參數(shù),分別用于掛載和卸載NTFS分區(qū)。腳本掛載NTFS卷前會(huì)在桌面新建一個(gè)與掛載設(shè)備名同名的一個(gè)空文件夾,用于作為文件系統(tǒng)的掛載點(diǎn)。
以上腳本使用前必須進(jìn)行合適的安裝,具體來(lái)說(shuō)就是需要將腳本保存到操作系統(tǒng)PATH搜索路徑內(nèi),便于腳本的調(diào)用。筆者將該腳本保存為/opt/local/bin/mount-ntfs文件。文件保存后,還需要使用chmod命令給腳本添加執(zhí)行權(quán)限。
通過(guò)以上的方法正確安裝好腳本后,腳本一般的使用過(guò)程如下:
1.插入帶有NTFS卷的U盤(pán)或者移動(dòng)硬盤(pán)。
2.當(dāng)桌面顯示出磁盤(pán)分區(qū)后,在控制臺(tái)終端輸入mount-ntfs mount命令執(zhí)行腳本,腳本正確執(zhí)行后,會(huì)重新以讀寫(xiě)模式掛載NTFS分區(qū)。
3.對(duì)分區(qū)進(jìn)行讀寫(xiě)操作……(用戶(hù)操作)。
4.在 彈出U盤(pán)或移動(dòng)硬盤(pán)前,在控制臺(tái)終端輸入mount-ntfs umount卸載分區(qū)。
在以上的操作中,如果不希望每次都進(jìn)入到控制臺(tái)輸入命令,可以將以上的命令制作成符號(hào)鏈接或者“替身”放在桌面上,這樣就可以通過(guò)簡(jiǎn)單的雙擊實(shí)現(xiàn)掛載和卸載分區(qū)。
使用bash腳本打開(kāi)macOS操作系統(tǒng)原生對(duì)NTFS卷的訪問(wèn)功能的關(guān)鍵是,采用rw和nobrowse參數(shù)重新“掛載”NTFS卷。腳本將mount、umount、awk 等 Unix命令有機(jī)結(jié)合起來(lái),將原本復(fù)雜的多個(gè)操作簡(jiǎn)化為一個(gè)腳本調(diào)用命令,使用戶(hù)不需要花費(fèi)額外的費(fèi)用,就能穩(wěn)定安全地實(shí)現(xiàn)NTFS文件系統(tǒng)的寫(xiě)入功能。
本文主要考慮了移動(dòng)存儲(chǔ)介質(zhì)NTFS文件分區(qū)掛載的情況,如果macOS系統(tǒng)的本地磁盤(pán)中也有采用NTFS分區(qū)格式的,可以直接在/etc/fstab文件中創(chuàng)建相關(guān)配置,這樣就可以實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)采用讀寫(xiě)模式訪問(wèn)NTFS分區(qū)。