Mac OS X - Problemas com permissão de arquivo na unidade USB NTFS

10

Posso ler / gravar arquivos em uma unidade USB externa NTFS.

Estou com alguns problemas com arquivos grandes, como o 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:

O item “file.avi” é usado pelo Mac OS X e não pode ser aberto.

Bem, encontrei uma solução alternativa: se eu arrastar e soltar file.avino meu player de vídeo, tudo funcionará bem.

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

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

LABEL=WD320 none ntfs rw
freedev
fonte
Isso está acontecendo apenas em arquivos de mídia (por exemplo, vídeos)? Você pode excluir especificamente alguns tipos de arquivo?
slhck 24/06
Outra coisa que você pode tentar é instalar o NTFS-3g e ver se funciona com isso.
slhck 24/06
Uma solução não técnica é abrir os arquivos acinzentados com o inútil Quick Time Player (QTP) usando 'visualização rápida'> clique duas vezes (ou com o botão direito do mouse) em nome do arquivo> Pesquisa rápida Isso só funciona com arquivos que o QTP pode abrir, como mp4 avi etc. Não abrirá arquivos mkv.
Para contornar o problema completamente, você pode criar os arquivos transferindo-os de um disco rígido externo (em vez de copiá-los do HD do seu computador) para o seu NTFS HD. Trabalhoso, com certeza, mas, em seguida, os arquivos podem ser acessados diretamente

Respostas:

25

Eu 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 as etapas para (espero) resolvê-lo:

  • Abra um terminal e execute

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

  • Então corra

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

  • Agora, altere esses atributos chamando

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

Obviamente, não consegui experimentá-lo (o que normalmente faria), mas talvez ajude.

slhck
fonte
Alguém se importa em explicar por que o voto negativo? O @NSGod realmente se referiu à minha resposta como algo a ser testado - a sua (muito boa) resposta apenas explica os antecedentes técnicos.
slhck
1
Muito bom. Muito obrigado por esta sugestão :)
freedev
Você não pode mais editar esses campos nas próprias propriedades do arquivo Finder? Eles parecem estar em caixas de texto editáveis ​​na captura de tela fornecida na resposta dada pelo @NSGod. Se você puder, isso explicaria um voto negativo, se você recomendou o download de um programa desnecessário.
trlkly
@ Trikly: Não, a janela mostrada na minha resposta é uma captura de tela do aplicativo Xray de Rainer Brockerhoff ( brockerhoff.net/xray ). O Mac OS X Finder nunca conseguiu editar tipos de arquivos e códigos de criador diretamente por meio de uma GUI (você pode usar o AppleScript). Minha intenção em mostrar a imagem era tentar ilustrar melhor o que estava acontecendo.
NSGod
1
Ainda funciona bem no macOS Sierra para meus arquivos de disco rígido montados em NTFS :-) obrigado!
217 Benno
7

O item “file.avi” é usado pelo Mac OS X e não pode ser aberto.

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

insira a descrição da imagem aqui

Quando você usa o Finder para duplicar arquivos, quando o Finder cria o arquivo duplicado pela primeira vez, ele define um tipo especial de arquivo 'brok'e um código de 'MACS'criador (o código de criador do próprio Finder), para indicar que o arquivo está em uso. Quando o Finder termina de criar o arquivo duplicado, ele redefine o tipo de arquivo e o código do criador para os do arquivo original.

Normalmente, você só encontra uma situação em que o 'brok'tipo de arquivo não é redefinido se o Finder falhar ou for interrompido de alguma forma 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 rwsuporte ao driver NTFS interno.

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

NSGod
fonte
2

Minha resposta a esse problema é o resultado de reunir respostas de várias outras postagens (muito obrigado) e minha própria experiência.

O plano de fundo: Eu tenho um disco rígido externo com um sistema de arquivos NTFS. Quero conectá-lo ocasionalmente. Anteriormente, o volume montava 'somente leitura'. Depois que eu consertei isso, os arquivos no volume estavam em um estado inutilizável. para montar o volume corretamente e ter os arquivos acessíveis, tive que fazer o seguinte:

FYI: Eu 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 como 'leitura / gravação' e os arquivos no disco têm seu status de 'brok' redefinido. Este script funciona bem para mim. Sua milhagem pode variar.

Desfrutar --

Jeffardo
fonte
1

Muito obrigado por isso - melhorei o script acima, pois ele não era executado na minha máquina OSX 10.8.4 (deu erros) e ficou um pouco lento. Só é necessário 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
JCV
fonte
Você poderia, por favor, mencionar as alterações feitas e o porquê - obrigado.
Suspeito # 28/07/13
obrigado pela resposta - tentei explicar no post acima.
JCV
Isso significa que um leitor precisa ler os dois blocos de código e fazer uma comparação mental. Algumas anotações para descrever o que você fez e por que seria útil.
Suspeito # 29/07/13
1
O script funciona apenas até que o disco seja remontado - então ele precisa alterar os parâmetros novamente. Tentei alterar os parâmetros do setFile para -c "????" (aplicativo criador desconhecido), que fornece uma solução persistente, mas confunde o quicktime ao abrir um filme (tipo de arquivo desconhecido blah blag).
JCV