Mac OS X-NTFS USB驱动器中的文件权限问题


10

我可以在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

这仅发生在媒体文件(例如视频)上吗?您可以专门排除某些文件类型吗?
slhck 2011年

您可以尝试的另一件事是仅安装NTFS-3g,然后查看它是否可以运行。
slhck 2011年

一个非技术性的解决方案是使用“快速视图”>双击(或右键单击)“文件名”>“快速查找”,使用无用的Quick Time Player(QTP)打开变灰的文件。这仅适用于QTP可以打开的文件,例如mp4 AVI等。它将不会打开MKV文件。

为了完全解决该问题,您可以通过将文件从外部硬盘传输(而不是从推杆的HD复制文件)到NTFS HD来创建文件。费力的,当然,但是然后可以直接访问文件

Answers:


26

我找到了一个处理相同主题的线程。文件显示为灰色,无法使用相同的错误消息打开。

以下是(希望)解决该问题的步骤:

  • 打开终端并运行

    xcode-select --install
    
  • 上面将安装XCode命令行工具

  • 然后跑

    GetFileInfo /Volumes/WD320/yourfile.avi
    
  • 应该有关于文件类型和创建者以及其他文件属性的信息

  • 现在,通过调用更改这些属性

    SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
    
  • 现在文件应该播放了

我显然无法尝试(通常会这样做),但也许有帮助。


有人在乎解释为什么要投票吗?@NSGod实际上将我的答案称为要尝试的东西-尽管他的(很好)答案仅说明了技术背景。
slhck 2011年

1
很好。非常感谢您的建议:)
freedev

您是否可以不再在Finder文件属性本身中编辑这些字段?它们似乎位于@NSGod给出的答案中给出的屏幕快照的可编辑文本框中。如果可以的话,如果您建议下​​载不必要的程序,那就可以解释为什么投票失败。
2014年

@trikly:不,我的答案中显示的窗口是Rainer Brockerhoff的Xray应用程序的屏幕截图(brockerhoff.net/xray)。Mac OS X Finder从未能够直接通过GUI编辑文件类型和创建者代码(您可能可以使用AppleScript)。我显示图像的目的是试图更好地说明正在发生的事情。
NSGod 2014年

1
对于我的NTFS挂载HDD文件,在macOS Sierra中仍然可以正常使用:-)谢谢!
本诺

7

项目“ file.avi”被Mac OS X使用,无法打开。

这表示该项目的文件类型为'brok',创建者代码为的'MACS'设置(尚未清除):

在此处输入图片说明

当您使用Finder复制文件时,当Finder首次创建重复文件时,它将设置特殊的文件类型'brok'和的创建者代码'MACS'(Finder本身的创建者代码),以表示该文件正在使用中。Finder完成创建重复文件后,会将文件类型和创建者代码重置为原始文件的文件类型和创建者代码。

通常,您只会遇到以下情况:'brok'如果Finder在文件复制期间崩溃或因其他原因中断,则文件类型不会重置。如果您不是这种情况,那么您所看到的很可能是rw内置NTFS驱动程序支持中的错误。

如slhck所述,您应该能够通过清除问题文件中的文件类型和创建者代码来消除Finder的这种反应。


2

我对这个问题的回答是将其他几个帖子的回答(非常感谢)和我自己的经验结合在一起的结果。

背景:我有一个带NTFS文件系统的外部硬盘驱动器。我想偶尔插入。以前,该卷将挂载为“只读”。一旦修复该问题,卷上的文件就处于无法使用的状态。为了正确安装卷并使文件可访问,我必须执行以下操作:

仅供参考:我是一个知识分子用户。将这些命令调整为您喜欢的外壳。

$ 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”状态。该脚本对我来说效果很好。你的旅费可能会改变。

请享用 -


1

非常感谢-我改进了上面的脚本,因为它无法在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

您能否提及所做的更改以及原因-谢谢。
嫌疑犯

感谢您的答复-我试图在上面的帖子中进行解释。
JCV

这意味着读者必须阅读两个代码块并进行心理比较。一些注释可以描述您所做的事情以及为什么会有所帮助。
嫌疑犯

1
该脚本仅在重新安装磁盘之前起作用-然后必须再次更改参数。我尝试将setFile参数更改为-c“ ????” (未知的创建者应用程序),它提供了一个持久的解决方案,但随后却在打开电影时混淆了快速时间(未知文件类型等等)。
JCV
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.