在 Linux 中使用 ntfs-3g 挂载 Windows 的 NTFS 分区时候有多个选项可以设置。挂载选项的设定需要视需要而定。在 openSUSE 中使用 FreeFileSync 同步文件夹到同一计算机的 Windows 分区中时,遇到了“Cannot write modification time”的错误。解决这个问题可以通过正确设置该 NTFS 分区的挂载选项实现。
ntfs-3g 是 Linux 下操作 NTFS 驱动器分区的驱动。有了它,现在已经可以非常方便的在 Linux 下操作 NTFS 分区中的内容了,包括读、写以及 Linux 中常用的 link 操作。在 Linux 自动挂载 Windows 系统的 NTFS 分区可参考这里。
最初的时候普通挂载 Windows 的分区没有遇到什么问题,反正当前的 Linux 用户可以读写分区中的内容就可以了。但是在使用 FreeFileSync 或者 Unison 同步软件的时候,如果有文件位于原来 Windows 系统的 NTFS 分区就会遇到“Cannot write modification time”的错误。而对于挂载到系统的 NTFS 分区的磁盘(移动硬盘或者大容量 U 盘)就没有这样的问题。所以问题肯定不在于 NTFS 本身,而在于其挂载到 Linux 的方式。
查看这个 FreeFileSync 的 bug 报告,以及 http://askubuntu.com/ 上的 Mount NTFS partition at startup, with non-root user as owner 和 How do I correctly mount a NTFS partition in /etc/fstab 这两个问答之后终于找到了解决问题的方法。
那就是,将 Windows 的 NTFS 分区挂载为当前 Linux 用户所有,而不是 root(当然没有使用 root 直接使用系统的习惯 :))。将 ntfs-3g 挂载选项修改(可以直接修改 /etc/fstab 文件也可以通过 YaST -> Partitioner)为,
rw,uid={Current_Power_User},gid=users,dmask=027,fmask=137,locale=en_GB.UTF-8 0 0
其中,{Current_Power_User} 可以是当前用户的 uid 也可以是用户名。uid 查询,
id -u
然后 umount 再重新 mount 这个分区就可以了。
如果上面这个不行,可以参考在 Linux 中挂载使用 Windows NTFS 分区一文的说明将上面那条参数改为,
rw,uid={Current_Power_User},gid=users,dmask=002,fmask=002,locale=en_GB.UTF-8 0 0
也许就可以了。这个新的参数赋予所有者(uid 指定的那个 Linux 用户)和所有 users 组的用户更大的权限(可以删除 NTFS 分区里的文件)。
这是迁移到 openSUSE 之后遇到的第一个迁就了好久才解决的问题,也算是 openSUSE 初始配置的一部分吧,毕竟现在同步软件对水景一页来说真是不可或缺了。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/freefilesync-linux-windows-ntfs/>。转载请保留此信息及相应链接。