zoukankan      html  css  js  c++  java
  • Mac下如何不借助第三方工具实现NTFS分区的可写挂载

    问题背景

    我想很多使用Mac的同学都会遇到读写NTFS磁盘的问题,因为默认情况下Mac OSX对NTFS磁盘的挂载方式是只读(read-only)的,因此把一个NTFS格式的磁盘插入到Mac上,是只能读不能写的,用起来很是不便。

    因此也就出现了一些第三方工具,例如Tuxera NTFS for Mac、Paragon NTFS for MAC等,这些工具都可以实现Mac下NTFS的写操作,但是这些工具都是收费的,当然也有些破解的版本,但是破解软件毕竟存在安全风险,so,I don't really like that.

    此外Tuxera也提供了开源的NTFS读写方案:NTFS-3G,基于GPL授权的NTFS-3G也可以通过用户空间文件系统在Mac OS X上实现NTFS分区的读写。这个方案也比较不错,只是需要简单的安装,本文不再展开。具体的可以参考官方链接:http://www.tuxera.com/community/open-source-ntfs-3g/

    但其实,我们完全可以不借助任何第三方工具就能解决这个问题,因为其实OSX原生就是支持NTFS的。后来由于微软的限制,苹果把这个功能给屏蔽了,但是我们可以通过命令行手动打开这个选项。

    How to do that?

    mount查看磁盘挂载情况

    1
    2
    3
    thatsitdeMacBook-Pro:~ thatsit$ mount
    /dev/disk4s2 on /Volumes/Untitled (ntfs, local, nodev, nosuid, read-only, noowners)
    thatsitdeMacBook-Pro:~ thatsit$

    这时候如果我们要实现/dev/disk4s1分区的可写挂载,我们只需要做做一下两个步骤:卸载、重新挂载

    卸载

    1
    thatsitdeMacBook-Pro:~ thatsit$ sudo umount /Volumes/Untitled/

    重新挂载

    1
    thatsitdeMacBook-Pro:~ thatsit$ sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk4s2 /Volumes/Udisk/

      

    这时候/dev/disk4s2已经以读写的方式挂载到/Volumes/Udisk/了,下面我们来进行挂载结果的确认

    确认挂载

    1
    2
    3
    thatsitdeMacBook-Pro:~ thatsit$ mount|grep ntfs
    /dev/disk4s2 on /Volumes/Udisk (ntfs, local, noowners, nobrowse)
    thatsitdeMacBook-Pro:~ thatsit$

    测试写入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    thatsitdeMacBook-Pro:~ thatsit$ cd /Volumes/Udisk/
    thatsitdeMacBook-Pro:Udisk thatsit$ touch test_writing
    thatsitdeMacBook-Pro:Udisk thatsit$ ll|grep test_writing 
    -rwxr-xr-x 1 thatsit staff 0 12 24 17:14 test_writing
    thatsitdeMacBook-Pro:Udisk thatsit$ 
    thatsitdeMacBook-Pro:Udisk thatsit$ echo heheda >> test_writing 
    thatsitdeMacBook-Pro:Udisk thatsit$ cat test_writing 
    heheda
    thatsitdeMacBook-Pro:Udisk thatsit$ 
    thatsitdeMacBook-Pro:Udisk thatsit$ ll|grep test_writing 
    -rwxr-xr-x 1 thatsit staff 7 12 24 17:15 test_writing
    thatsitdeMacBook-Pro:Udisk thatsit$

    上述挂载参数的详细说明:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <strong>mount -t ntfs -o rw,auto,nobrowse /dev/disk4s2 /Volumes/Udisk/</strong>
     
    -t ntfs # 执行要挂载的分区文件系统格式
    -o # 执行挂载的选项
    rw # read-write,以读写的方式挂载
    auto # 自动检测文件系统,此参数可以省略
    nobrowse # 这个选项非常重要,因为这选项指明了在finder里不显示这个分区,只有打开了这个选项才能将磁盘以读写的方式进行挂载
    /dev/disk4s2 # 要挂载的分区,也就是我们在mount命令中看到的盘符
    /Volumes/Udisk/ # 挂载点
     
    * /Volumes/Udisk这个目录是需要存在的,如果不存在需要手动创建下:sudo mkdir /Volumes/Udisk
    * 如果目录不存在会收到如下报错:
    mount: realpath /Volumes/Udisk: No such file or directory

      

    通过上面的测试大家也看到了,此时的NTFS分区已经是可写的了;但是这个时候还存在另一个小问题,因为我们在挂载的时候使用nobrowse选项,这个分区在finder里是不显示的。

    总会有些同学不习惯一直使用命令行进行操作,所以需要高解决这个问题:
    解决办法其实很简单,因为这个分区是挂/Volumes下的,我们把这个目录在桌面做一个软链接就OK了。

    创建软链接

    1
    2
    3
    thatsitdeMacBook-Pro:Udisk thatsit$ sudo ln -s /Volumes/Udisk/ ~/Desktop/Udisk
    Password: # <----输入用户密码
    thatsitdeMacBook-Pro:Udisk thatsit$

    效果如下:桌面上会显示如下的盘符,点击即可进入Finder

    或者参考下面:

    其实最早在OSX 10.5的时候,OSX其实原生就支持直接写入NTFS的盘的,后来由于微软的限制,把这个功能给屏蔽了,我们可以通过命令行手动打开这个选项。
    第一步,当然是插上磁盘。(如果是BOOTCAMP,直接开始使用命令)

    请别忘记,是在打开“实用工具”-“终端“里面进行输入命令。


    可以从finder或者使用以下命令查看到磁盘的Volume Name:

    diskutil list

    /dev/disk0 (internal, physical):
       #:                       TYPE           NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *121.3 GB   disk0
       1:                        EFI              EFI                     209.7 MB   disk0s1
       2:                  Apple_HFS       Macintosh HD            88.0 GB    disk0s2
       3:                 Apple_Boot        Recovery HD             650.0 MB   disk0s3

       4:       Microsoft Basic Data   BOOTCAMP                32.5 GB    disk0s4



    可以看到,我的 Volume Name 是BOOTCAMP。


    紧接着更新 /etc/fstab文件

    sudo nano /etc/fstab



    出现让你输入自己电脑的密码(没有密码的会跳过去),输入电脑密码后出现以下内容:

      GNU nano 2.0.6              File: /etc/fstab                                 






                                    [ Read 1 line ]
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos

    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell






    接着把以下内容写入进去

    LABEL=BOOTCAMP none ntfs rw,auto,nobrowse


    下面来依次解释一下,如果你的名字里面有空格键,就需要用40的意思是代替空格键,如:BOOT/040CAMP。

    后面的Ntfs rw表示把这个分区挂载为可读写的ntfs格式,最后nobrowse非常重要,因为这个代表了在finder里不显示这个分区,这个选项非常重要,如果不打开的话挂载是不会成功的。

    完成这里以后不是按回车,按 Ctrl + X
    会出现要不要保存的字样,请按 Y 然后回车
    这个时候可以重启了。

    当然还有个缺陷需要去掉:因为这个分区在finder里不显示了,那么我们要怎么找到它呢,总不能一直用命令行。

    解决办法其实很简单,因为这个BOOTCAMP分区是挂/Volumes下的,我们把这个目录在桌面做一个快捷方式就行了。

    sudo ln -s /Volumes/BOOTCAMP ~/Desktop/BOOTCAMP
     
    抱歉一下,由于在Desktop/后面多输入个volumes,请最后一步没法能创建快捷方式的同学,用这个上面最新的公式。
     
    如果想以后都能看到除BOOTCAMP以外其他隐藏的驱动器的话,可以多创建一个这个文件夹快捷方式:如下:
    sudo ln -s /Volumes ~/Desktop/Volumes



    然后我们能在桌面找到,

    <ignore_js_op>

    或者这个<ignore_js_op>





    点开以后就能找到磁盘了,当然我们还可以把它拉到finder里面的侧栏上去,就更方便了。
    <ignore_js_op>



    用这种方法打开的是系统原生的ntfs功能,稳定实用,比第三方工具要好用的多了。

    ----Done----

    参考链接:
    https://zh.wikipedia.org/wiki/NTFS

  • 相关阅读:
    gitlab备份及迁移
    python paramiko 进行文件上传处理
    秒杀场景简介
    nmon--非常棒的LINUX/AIX性能计数器监测和分析工具
    使用wait()与notify()实现线程间协作
    【转】Spring bean处理——回调函数
    ldconfig和ldd用法
    tcpdump 获取http请求url
    clearfix清除浮动
    git push命令
  • 原文地址:https://www.cnblogs.com/linusflow/p/8735344.html
Copyright © 2011-2022 走看看