Mac OS X - Problemas com a permissão de arquivo na unidade usb do NTFS

8

Eu posso ler / gravar arquivos em uma unidade USB externa NTFS.

Eu tenho alguns problemas com arquivos grandes como AVI / MKV armazenados em uma unidade externa NTFS. Esses arquivos aparecem acinzentados no Finder e, sempre usando o Finder, quando eu "abro com" meu player de vídeo recebo um erro estranho:

Item “file.avi” is used by Mac OS X and cannot be opened.

Bem, eu encontrei uma solução: se eu arrastar & solte file.avi no meu player de vídeo e tudo funciona bem.

Mas realmente não consigo entender por que esse problema aparece.

Por favor, considere que eu não tenho nenhum driver personalizado NTFS instalado (por exemplo, MacFUSE ou NTFS-3g). Para montar minha unidade USB NTFS em R / W, modifiquei apenas /etc/fstab , adicionando a seguinte linha:

LABEL=WD320 none ntfs rw
    
por freedev 24.06.2011 / 12:15

4 respostas

22

Encontrei um tópico que lida com o mesmo assunto. Os arquivos aparecem em cinza e não podem ser abertos com a mesma mensagem de erro.

Aqui estão os passos para (espero) resolvê-lo:

  • Abra um terminal e execute

    xcode-select --install
    
  • O acima irá instalar as ferramentas de linha de comando do XCode

  • Em seguida, execute

    GetFileInfo /Volumes/WD320/yourfile.avi
    
  • Deve haver informações sobre o tipo de arquivo e o criador e outros atributos de arquivo

  • Agora, altere esses atributos chamando

    SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
    
  • Agora o arquivo deve ser reproduzido

Eu obviamente não pude experimentar (o que normalmente faço), mas talvez ajude.

    
por 24.06.2011 / 13:28
7

Item “file.avi” is used by Mac OS X and cannot be opened.

Isso significa que o item teve um tipo de arquivo de 'brok' e um código de criador de 'MACS' definido para ele (e não limpo):

Quando você usa o Finder para duplicar arquivos, quando o Finder primeiro cria o arquivo duplicado, ele define um tipo de arquivo especial de 'brok' e um código de criador de 'MACS' (o código do criador do próprio Finder). para significar que o arquivo está em uso. Uma vez que o Finder conclua a criação do arquivo duplicado, ele redefine o tipo de arquivo e o código do criador para aqueles do arquivo original.

Normalmente, você só encontrará uma situação em que o tipo de arquivo 'brok' não seja redefinido se o Finder falhar ou, de alguma forma, for interrompido durante a cópia do arquivo. Se esse não for o seu caso, o que você está vendo pode muito bem ser um bug no suporte rw do driver NTFS integrado.

Como o slhck mencionou, você deve poder limpar essa reação do Finder limpando o tipo de arquivo e o código do criador do arquivo em questão.

    
por 25.06.2011 / 18:49
2

Minha resposta para esse problema é o resultado de reunir respostas de vários outros posts (muito obrigado) e minha própria experiência.

O fundo: Eu tenho um disco rígido externo com um sistema de arquivos NTFS. Eu quero ligar de vez em quando. Anteriormente, o volume montava 'somente leitura'. Depois de consertar isso, os arquivos no volume estavam em um estado inutilizável. a fim de obter o volume montado corretamente e ter os arquivos acessíveis, eu tive que fazer o seguinte:

FYI: Sou um usuário de kornshell. Ajuste esses comandos para o seu shell preferido.

$ sudo ksh
<password>

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

$ vi /sbin/mount_ntfs

Em seguida, cole o conteúdo abaixo:

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

Então:

$ chmod a+x /sbin/mount_ntfs

$ chown root:wheel /sbin/mount_ntfs

Agora, sempre que eu conecto o disco, ele é montado 'read / write' e os arquivos no disco têm sua redefinição de status 'brok'. Este script funciona bem para mim. Sua milhagem pode variar.

Aproveite -

    
por 21.09.2011 / 23:24
1

Muito obrigado por isso - eu melhorei o script acima, pois ele não rodou na minha máquina OSX 10.8.4 (deu erros) e foi um pouco lento. Só precisa verificar quando um disco somente leitura está montado ... Alterações marcadas com 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
    
por 28.07.2013 / 23:04