我可以读取/写入 NTFS 外部 USB 驱动器内的文件。
我在处理存储在 NTFS 外部驱动器上的 AVI/MKV 等大型文件时遇到了一些问题。这些文件在 Finder 中显示为灰色,并且我一直使用 Finder,当我使用视频播放器“打开”时,我收到一个奇怪的错误:
项目“file.avi”由 Mac OS X 使用,无法打开。
好吧,我找到了一个解决方法:如果我将图片拖放file.avi
到我的视频播放器中,一切都会正常工作。
但我确实不知道为什么会出现这个问题。
请考虑我没有安装任何 NTFS 自定义驱动程序(即 MacFUSE 或 NTFS-3g)。要在 R/WI 中安装我的 NTFS USB 驱动器,只需修改/etc/fstab
,添加以下行:
LABEL=WD320 none ntfs rw
答案1
我发现一个线程处理完全相同的主题。文件显示为灰色,无法打开,并显示相同的错误消息。
以下是(希望)解决该问题的步骤:
打开终端并运行
xcode-select --install
以上将安装 XCode 命令行工具
然后,运行
GetFileInfo /Volumes/WD320/yourfile.avi
应该有关于文件类型和创建者以及其他文件属性的信息
现在,通过调用来更改这些属性
SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
现在文件应该可以播放了
我显然无法尝试它(我通常会这样做),但也许它会有所帮助。
答案2
项目“file.avi”由 Mac OS X 使用,无法打开。
这意味着该项目已设置了文件类型'brok'
和创建者代码'MACS'
(且未被清除):
当您使用 Finder 复制文件时,Finder 首次创建复制文件时,会将特殊文件类型设置为'brok'
,并将创建者代码设置为'MACS'
(Finder 本身的创建者代码),以表示该文件正在使用中。Finder 完成创建复制文件后,会将文件类型和创建者代码重置为原始文件的类型和创建者代码。
通常情况下,您只会遇到'brok'
文件类型未重置的情况,如果 Finder 崩溃或在文件复制过程中以其他方式中断。如果您遇到的情况并非如此,那么您看到的情况很可能是rw
内置 NTFS 驱动程序支持中的错误。
正如 slhck 提到的,您应该能够通过清除相关文件的文件类型和创建者代码来清除 Finder 的此反应。
答案3
我对这个问题的回答是拼凑了从其他几篇文章(非常感谢)中得到的答案以及我自己的经验的结果。
背景:我有一个带有 NTFS 文件系统的外部硬盘。我想偶尔插入它。以前,该卷会以“只读”方式挂载。修复该问题后,卷上的文件处于不可用状态。为了正确挂载卷并让文件可访问,我必须执行以下操作:
仅供参考:我是 kornshell 用户。请将这些命令调整为您喜欢的 shell。
$ sudo ksh
<password>
$ mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
$ vi /sbin/mount_ntfs
然后粘贴下面的内容:
#!/bin/ksh
# --- direct all script stdout to a temp file for examination
exec > /tmp/ntfs
# --- connect all stderr to stdout
exec 2>&1
# --- get the last argument on the command line - this is the mount point
eval echo \$$# |
read MOUNT_PT
echo "\${MOUNT_PT} = \"${MOUNT_PT}\""
echo
echo "Mounting $@"
# --- call the original ntfs mounter with the arguments handed in
/sbin/mount_ntfs.orig -o rw "$@"
echo "Mounted $@"
# --- show the result of the mounting operation
mount
# --- fix files at the newly mounted MOUNT_PT that are in the 'brok' state
find "${MOUNT_PT}" -type f |
while read FILE; do
# ---
# --- use 'SetFile' to modify the file status
# ---
# --- this command line assumes the 'SetFile' command has been installed
# --- and is available in your PATH
# ---
SetFile -c "" -t "" "${FILE}"
done
然后:
$ chmod a+x /sbin/mount_ntfs
$ chown root:wheel /sbin/mount_ntfs
现在,无论何时插入磁盘,它都会被挂载为“读/写”,并且磁盘上的文件会重置为“brok”状态。这个脚本对我来说很有效。您的情况可能会有所不同。
享受 -
答案4
非常感谢 - 我改进了上面的脚本,因为它无法在我的 OSX 10.8.4 机器上运行(出现错误)并且有点慢。只需要在安装只读磁盘时检查... 标记为的更改JCV CHANGED
:
#!/bin/ksh
# --- direct all script stdout to a temp file for examination
exec > /tmp/ntfs
# --- connect all stderr to stdout
exec 2>&1
# --- get the last argument on the command line - this is the mount point
eval MOUNT_PT=\${$#}
# -- JCV CHANGED: corrected eval expression
echo "\${MOUNT_PT} = \"${MOUNT_PT}\""
echo
echo "Mounting $@"
# --- call the original ntfs mounter with the arguments handed in
/sbin/mount_ntfs.orig "$@"
echo "Mounted $@"
# --- show the result of the mounting operation
mount
# --- fix files at the newly mounted MOUNT_PT that are in the 'brok' state
find "${MOUNT_PT}" -type f |
while read FILE; do
#JCV CHANGED: added check whether file type affected
GetFileInfo -t "${FILE}" | read FILETYPE
if [[ $FILETYPE = "\"brok\"" ]];then
# ---
# --- use 'SetFile' to modify the file status
# ---
# --- this command line assumes the 'SetFile' command has been installed
# --- and is available in your PATH
# ---
SetFile -c "" -t "" "${FILE}"
echo "fixing file ${FILE}"
fi
done