google-drive中todo.txt-cli修改后文件变为Binary类型的问题求助
问题解决思路与原因分析
核心问题原因
Google Drive的文件类型判定逻辑中,.tmp这类临时文件会被默认标记为二进制类型。当todo.txt-cli(或LibreOffice这类应用)编辑文件时,通常会先创建临时文件(比如todo.txt.tmp),编辑完成后再替换原文件。google-drive-ocamlfuse同步临时文件的过程中,Google Drive会先识别临时文件为二进制类型,当临时文件替换原todo.txt后,Drive的类型缓存未及时更新,导致原文件被错误标记为二进制,最终安卓ToDo.txt应用无法识别。
可行解决方案
1. 修改todo.txt-cli的临时文件规则
编辑todo.txt-cli的配置文件(通常为~/.todo/config),添加或修改参数,让工具使用不带.tmp后缀的临时文件,或者将临时文件放在本地目录避免同步到Google Drive:
# 方案一:自定义临时文件名,避开.tmp后缀 export TODO_TMPFILE="/path/to/your/google-drive-folder/todo.txt.temp" # 方案二:将临时文件存本地目录,不同步到Drive export TODO_TMPFILE="/tmp/todo.txt.tmp"
2. 强制修正文件MIME类型
如果文件已被标记为二进制,可通过google-drive-ocamlfuse的属性设置强制指定MIME类型为文本:
setfattr -n user.mime_type -v "text/plain" /path/to/your/google-drive-folder/todo.txt
执行后重新同步,Google Drive会更新文件类型为文本。
3. 调整Drive挂载的同步策略
挂载Google Drive时添加--no-verify参数,跳过Drive的自动MIME类型检测:
google-drive-ocamlfuse -o allow_other --no-verify /path/to/mount-point
关于Google API判定逻辑的说明
Google Drive的文件类型判定优先级为:先检查文件扩展名,再尝试读取内容检测。对于.tmp这类通用临时文件扩展名,Drive没有预设的对应文本类型,因此默认归类为二进制——这是因为临时文件多为应用内部中间文件,格式不固定,Drive倾向于用二进制标记来避免误判。
内容的提问来源于stack exchange,提问作者Shawn Hughes
相关产品推荐
相关产品推荐

