OS X 原生可读写挂载NTFS分区

96
冬日的骑士
2015.11.26 14:00* 字数 583

经常在不同系统间复制文件的童鞋相信对移动硬盘和U盘的分区格式头痛不已, 特别是windows, Linux, Mac三个系统之间互相传东西, 真要跪了.选用哪种格式就很头疼.!(╯‵□′)╯︵┻━┻..

为了照顾其他同学,万恶的 windows是要支持的, 自己用Mac, Linux, 当然也要支持. 这样NTFS,fat32, exfat 就是仅有的几个选择了. 当然,你可以让windows 支持 ext 或者 HFS, 但是别人没有装专门软件的情况, 的确是个问题. exfat 不考虑. fat32 不支持大文件, 只能选择NTFS了.

linux 对 ntfs 的支持还不错, 但是 Mac 默认只能以只读方式挂载分区. 为了支持对其写入, 我们可以使用 Paragon NTFS, 但是仅仅为了这一点功能却花费几十刀, 想想就心疼. 或者可以使用开源的 ntfs-3g, 不过使用体验不好.

其实 Mac 本身的 mount_ntfs 是支持可读写挂载分区的. 只是被隐藏了而已.(难道 APPLE 你非要这么傲娇嘛,凸(艹皿艹 ).


开始之前, 先对mount_ntfs作备份.

sudo cp /sbin/mount_ntfs /sbin/mount_ntfs.old

我们再写一个脚本 mount_ntfs 看看 mac 是如何挂载分区的.

#!/bin/bash -
echo $0 $* >/Users/dark/mount.log

然后 复制到 原文件所在.

sudo cp mount_ntfs /sbin/mount_ntfs

插入一个ntfs分区的u盘, (这里好像会出现bug, 不用管它, ╮( ̄▽ ̄")╭),大致会在 mount.log 中看到如下的东东:

mount_ntfs -o nodev -o noowners -o nosuid /dev/disk2s1 /Volumes/DATA

其中, DATA 是你分区的 label (这里是我的), disk2s1 就是你分区所在. 这两个就是主要的参数. 好了, 然后我们写个有用的盗版 mount_ntfs, 体换掉刚才的:

#!/bin/bash -
disk=$7
volume="$8"
mount_ntfs.old -o rw,auto,nobrowse $disk "$volume"
open "$volume"
### remember that go to /Volumes to umount disk by yourself.╮( ̄▽ ̄")╭

恩. 是的, 需要你自己进到 /Volumes 去卸载分区. 因为这个是不显示在Finder 侧边栏的. (两者好像是冲突的... 也真是不省心(╮( ̄▽ ̄")╭ 没办法~)

一个简洁版的mount_ntfs就成了. 这样就可以自动挂载了, 可以尽情地调教你的分区了.o( ̄▽ ̄)o

卸载就手动进到/Volumes卸载. 嗯~, 加上下面的函数你的 .bash_profile 或者.bashrc中:

function untfs(){
if [[ $# -ne 1 ]]; then
echo "Usage: untfs Volume"
return 1
fi
volume="$1"
old=`pwd`
cd /Volumes
sudo umount "$volume"
if [[ $? -ne 0 ]]; then
    echo "Error when umount "$volume"
    open .
    return 1
fi
cd "$old"
}

然后在终端运行:

untfs DATA

卸载NTFS分区. 没有卸载成功时, 便打开 /Volumes 让你手动卸载.


水水更健康╭(′▽`)╭(′▽`)╯.

日记本