Mac挂载可读写的NTFS硬盘/U盘

 
在Mac上插入一块移动 NTFS 硬盘(或U盘)时, 默认情况下此硬盘是仅可读的; 也就是说只能读取数据, 而不能写入数据

默认情况

NTFS 格式主要是 Windows 的文件系统格式, 如果在 Mac 下使用时, 默认只可以把文件拷贝出来, 但是无法写入
用过一些APP, 例如: Paragon NTFS for MACTuxera NTFS for Mac, 不足之处在于要安装后需要重启, 收费, 最后好像还卸载不干净…
例如我的一块移动硬盘, 有2个分区: swapper 和 storehouse
分别使用 df 和 diskutil 命令进行查看
$ df -h
Filesystem      Size   Used  Avail Capacity iused               ifree %iused  Mounted on
/dev/disk1s1   234Gi  202Gi   27Gi    89% 2354578 9223372036852421229    0%   /
devfs          192Ki  192Ki    0Bi   100%     664                   0  100%   /dev
/dev/disk1s4   234Gi  3.0Gi   27Gi    10%       5 9223372036854775802    0%   /private/var/vm
map -hosts       0Bi    0Bi    0Bi   100%       0                   0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%       0                   0  100%   /home
/dev/disk2s1   120Gi   40Gi   80Gi    34%   16631            84099986    0%   /Volumes/swapper
/dev/disk2s2   178Gi  138Gi   40Gi    78%  354782            42125198    1%   /Volumes/storehouse
默认会被挂载到 /Volumes 目录下, 桌面也能同时看到相应的磁盘图标
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         250.8 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +250.8 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            217.4 GB   disk1s1
   2:                APFS Volume Preboot                 24.0 MB    disk1s2
   3:                APFS Volume Recovery                519.6 MB   disk1s3
   4:                APFS Volume VM                      3.2 GB     disk1s4

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *320.1 GB   disk2
   1:               Windows_NTFS swapper                 128.8 GB   disk2s1
   2:               Windows_NTFS storehouse              191.2 GB   disk2s2
插入硬盘后, 即使已经 [推出] 硬盘了(线还没拔), 同样可以使用 diskutil 命令查看到如上内容, 此时是可以使用 mount 命令进行挂载的

重新挂载磁盘

直接上代码 ntfs_mount.sh
#!/bin/bash
#author:xu3352@gmail.com
#desc: re-mount NTFS disk as rw type

TMP_SH=/tmp/ntfs_mount_rw_tmp.sh

diskutil list | grep NTFS | awk '{print "umount /Volumes/"$3"\n", "mkdir -p ~/Desktop/"$3"\n", "sudo mount -t ntfs -o rw,auto,nobrowse", "/dev/"$6, "~/Desktop/"$3"\n"}' > $TMP_SH

sudo sh $TMP_SH
步骤详解:
  • 卸载硬盘
  • 对于待挂载的磁盘, 如果没有对应的目录, 这需要先创建
  • 挂载磁盘到指定的目录
记得给可执行权限: chmod 755 ntfs_mount.sh, 执行时需要输入一次密码

不足之处

如果手动在桌面右键 [推出] 硬盘后, 桌面会保留硬盘对应的文件夹, 删除时一般还需要输入密码才行
当然, 也是可以做成脚本的: ntfs_umount.sh
#!/bin/bash
#author:xu3352@gmail.com
#desc: umount NTFS disk in Desktop dir

TMP_SH=/tmp/ntfs_umount_tmp.sh
df -h | grep /Desktop/ | awk '{print $9}' > $TMP_SH

grep /Desktop/ $TMP_SH | xargs -n 1 sudo umount
grep /Desktop/ $TMP_SH | xargs -n 1 rm -rf

---------------------

Mac 挂载可读写 NTFS 硬盘

之前遇到别人的 U 盘插入到 Mac 上居然无法写入文件,但是可以读取。当时没有仔细研究,后来买个移动硬盘,才知道了不同的格式化选项会在不同平台有差异。这里主要记录不借助第三方软件的情况下在 Mac 上挂载可读可写的硬盘。以后遇到 NTFS 格式的 U 盘也可以拷贝数据给别人。
 

 不同格式

移动硬盘格式化的文件系统格式一般有 Fat32、NTFS、HFS+、exFAT 等。
其中 Fat32 的缺点就是不支持 4g 以上的文件;HFS+ 是 Mac 专有的文件系统格式;exFAT 不稳定,据说会丢数据。所以我选择 NTFS,NTFS 在 win 平台可读可写,但是在 Mac 平台就只能读,这其实是 macos 屏蔽了而已。

 挂载

上面说了其实 macos 已经具备了挂载可读可写 NTFS 硬盘的功能,只是需要手动开启。
首先插入 U 盘,查看挂在情况。

1
mount

然后取消挂载 U 盘。

1
sudo umount /Volumes/KINGSTON

在桌面创建文件夹 ntfs,为了让 U 盘重新挂在到这里。重新挂载即可。

1
sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk2s1 ~/Desktop/ntfs

rw 参数代表可读写。auto 参数代表自动检测文件系统。nobrowse 代表不在 finder 里面显示挂载情况,必须要有这个参数。
当然不用 -t 参数指定文件系统格式,也可以用 mount_ntfs 命令,都是一样的效果。
1
sudo mount_ntfs -o rw,auto,nobrowse /dev/disk2s1 ~/Desktop/ntfs