如果我编辑 U 盘上的文件,然后直接物理移除它,数据将不会被记录。我必须单击“弹出”,然后 LED 开始闪烁,数据开始被记录。
我该如何改变这一点,以便数据在改变时立即记录下来?
更新:Ubuntu 11.10
在 Ubuntu 11.10 中,我编写了规则文件(来自@enzotib答案),并且可以工作,但是当我尝试弹出/卸载时出现以下消息:
(我是否应该针对 Ubuntu 11.10 提出另一个问题?)
答案1
继问题和答案)@arrange 在他的评论中显示,让我们创建一个新文件
/etc/udev/rules.d/11-media-by-label-auto-mount.rules
并写入以下内容(参见udev::Mount 在 /media 下;使用分区标签(如果存在))
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"
# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# Global mount options
ACTION=="add", ENV{mount_options}="relatime,sync"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,uid=1000,gid=1000,umask=002"
# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
# Exit
LABEL="media_by_label_auto_mount_end"
我对网站上报告的内容做了一些小修改
- 增加了
sync
选项ENV{mount_options}
- 修改了
gid=100
选项为uid=1000,gid=1000
,其中数字与您的 used-id 和 group-id 相关,由id -u
和返回。id -g
第二种方法让你成为挂载分区上所有文件的所有者,因此不会出现权限问题。如果多个用户访问文件,情况显然不是这样,但可以通过其他方式处理。
对于非 Windows 文件系统,所有者和组是文件系统上的元数据,不能通过挂载选项进行更改。
新规则立即生效(udev用途通知检测新的和修改的规则文件)。
如您所见,已安装的驱动器不会自动在文件管理器窗口中打开,这很难实现,因为安装过程由 root 拥有,并且无法访问您的图形登录会话。但驱动器位于您的桌面上,因此只需双击即可打开它。
不幸的是,我无法让桌面右键单击卸载工作,但这不是一个大问题:有了这个sync
选项,您可以简单地拔下设备,udev 规则会负责从中删除条目/proc/mounts
并删除挂载点。
答案2
对于较新的 Ubuntu(> 20.04),您可以创建/编辑 /etc/udisks2/mount_options.conf 并设置:
[defaults]
defaults=noatime,sync
和
sudo service udisks2 restart
断开并重新连接磁盘。
这使得同步所有文件系统自动挂载并忽略创建时间(加速导航文件系统)