Mac OS X - Problèmes avec l'autorisation de fichier dans le lecteur USB NTFS

10

Je peux lire / écrire des fichiers sur un lecteur USB externe NTFS.

J'ai des problèmes avec des fichiers volumineux comme AVI / MKV stockés sur un disque externe NTFS. Ces fichiers apparaissent grisés dans le Finder et, en utilisant toujours le Finder, lorsque j'ouvre avec mon lecteur vidéo, je reçois une étrange erreur:

L'élément «file.avi» est utilisé par Mac OS X et ne peut pas être ouvert.

Eh bien, j'ai trouvé une solution de contournement: si je fais un glisser-déposer file.avidans mon lecteur vidéo, tout fonctionne bien.

Mais vraiment, je ne peux pas comprendre pourquoi ce problème apparaît.

Veuillez considérer que je n'ai aucun pilote personnalisé NTFS installé (c'est-à-dire MacFUSE ou NTFS-3g). Pour monter mon lecteur USB NTFS en R / WI ont modifié uniquement /etc/fstab, en ajoutant la ligne suivante:

LABEL=WD320 none ntfs rw
Liberté
la source
Cela se produit-il uniquement sur les fichiers multimédias (par exemple, les vidéos)? Pouvez-vous spécifiquement exclure certains types de fichiers?
slhck
Une autre chose que vous pourriez essayer est d'installer simplement NTFS-3g et de voir si cela fonctionne avec cela.
slhck
Une solution non technique consiste à ouvrir les fichiers grisés avec l'inutile Quick Time Player (QTP) en utilisant `` vue rapide ''> double (ou droit) cliquez sur le nom de fichier> Aperçu rapide Cela ne fonctionne qu'avec les fichiers que QTP peut ouvrir tels que mp4 avi etc. Il n'ouvrira pas les fichiers mkv.
Pour contourner complètement le problème, vous pouvez créer les fichiers en les transférant d'un disque dur externe (au lieu de les copier depuis le disque dur de votre ordinateur) vers votre disque dur NTFS. C'est laborieux, bien sûr, mais alors les fichiers sont accessibles directement

Réponses:

25

J'ai trouvé un fil qui traite du même sujet. Les fichiers apparaissent grisés et ne peuvent pas être ouverts avec le même message d'erreur.

Voici les étapes pour (espérons-le) le résoudre:

  • Ouvrez un terminal et exécutez

    xcode-select --install
    
  • Ce qui précède installera les outils de ligne de commande XCode

  • Ensuite, exécutez

    GetFileInfo /Volumes/WD320/yourfile.avi
    
  • Il devrait y avoir des informations sur le type de fichier et le créateur et d'autres attributs de fichier

  • Maintenant, changez ces attributs en appelant

    SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
    
  • Maintenant, le fichier devrait jouer

Je ne pouvais évidemment pas l'essayer (ce que je ferais normalement), mais peut-être que ça aide.

slhck
la source
Quelqu'un veut-il expliquer pourquoi le downvote? @NSGod a fait référence à ma réponse comme étant la chose à essayer - sa (très bonne) réponse n'explique cependant que le contexte technique.
slhck
1
Très bien. Merci beaucoup pour cette suggestion :)
freedev
Ne pouvez-vous plus modifier ces champs dans les propriétés du fichier du Finder lui-même? Ils semblent être dans des zones de texte modifiables dans la capture d'écran donnée dans la réponse donnée par @NSGod. Si vous le pouvez, cela expliquerait un downvote, si vous recommandiez de télécharger un programme inutile.
trlkly
@trikly: Non, la fenêtre affichée dans ma réponse est une capture d'écran de l'application Xray de Rainer Brockerhoff ( brockerhoff.net/xray ). Le Finder de Mac OS X n'a ​​jamais eu la possibilité de modifier les types de fichiers et les codes de créateur directement via une interface graphique (vous pouvez peut-être utiliser AppleScript). Mon intention en montrant l'image était d'essayer de mieux illustrer ce qui se passait.
NSGod
1
Fonctionne toujours bien dans macOS Sierra pour mes fichiers HDD montés sur NTFS :-) merci!
Benno
7

L'élément «file.avi» est utilisé par Mac OS X et ne peut pas être ouvert.

Cela signifie que l'élément a un type de fichier 'brok'et un code créateur 'MACS'défini pour celui-ci (et non effacé):

entrez la description de l'image ici

Lorsque vous utilisez le Finder pour dupliquer des fichiers, lorsque le Finder crée le fichier en double pour la première fois, il définit un type de fichier spécial 'brok'et un code de 'MACS'créateur (le code de créateur du Finder lui-même) pour indiquer que le fichier est en cours d'utilisation. Une fois que le Finder a fini de créer le fichier en double, il réinitialise le type de fichier et le code créateur à ceux du fichier d'origine.

Normalement, vous ne rencontreriez une situation où le 'brok'type de fichier n'est pas réinitialisé si le Finder venait à planter ou était interrompu d'une manière ou d'une autre pendant la copie du fichier. Si ce n'est pas le cas pour vous, ce que vous voyez pourrait bien être un bogue dans la rwprise en charge du pilote NTFS intégré.

Comme l'a mentionné slhck, vous devriez être en mesure d'effacer cette réaction par le Finder en effaçant le type de fichier et le code créateur du fichier en question.

NSGod
la source
2

Ma réponse à ce problème est le résultat du bricolage de réponses tirées de plusieurs autres messages (merci beaucoup) et de ma propre expérience.

L'arrière-plan: J'ai un disque dur externe avec un système de fichiers NTFS. Je veux le brancher de temps en temps. Auparavant, le volume était monté en lecture seule. Une fois ce problème résolu, les fichiers du volume étaient dans un état inutilisable. afin de monter le volume correctement et d'avoir les fichiers accessibles, j'ai dû faire ce qui suit:

FYI: Je suis un utilisateur kornshell. Ajustez ces commandes à votre shell préféré.

$ sudo ksh
<password>

$ mv /sbin/mount_ntfs /sbin/mount_ntfs.orig

$ vi /sbin/mount_ntfs

Collez ensuite le contenu ci-dessous:

#!/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

Alors:

$ chmod a+x /sbin/mount_ntfs

$ chown root:wheel /sbin/mount_ntfs

Maintenant, chaque fois que je branche le disque, il est monté en «lecture / écriture» et les fichiers sur le disque ont leur statut «brok» réinitialisé. Ce script fonctionne bien pour moi. Votre kilométrage peut varier.

Prendre plaisir --

Jeffardo
la source
1

Merci beaucoup pour cela - j'ai amélioré le script ci-dessus car il ne fonctionnait pas sur ma machine OSX 10.8.4 (a donné des erreurs) et était un peu lent. Il suffit de vérifier quand un disque en lecture seule est monté ... Modifications marquées par 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
la source
Pourriez-vous s'il vous plaît mentionner les modifications apportées et pourquoi - merci.
suspectus
merci pour la réponse - j'ai essayé de l'expliquer dans le post ci-dessus.
JCV
Cela signifie qu'un lecteur doit lire les deux blocs de code et faire une comparaison mentale. Une annotation pour décrire ce que vous avez fait et pourquoi serait utile.
suspectus
1
Le script ne fonctionne que jusqu'à ce que le disque soit remonté - puis il doit à nouveau modifier les paramètres. J'ai essayé de changer les paramètres de setFile en -c "????" (application du créateur inconnue) qui donne une solution persistante mais qui confond ensuite quicktime lors de l'ouverture d'un film (type de fichier inconnu blah blag).
JCV