Mac OS X - problemy z uprawnieniami do plików na dysku USB NTFS

10

Potrafię czytać / zapisywać pliki na zewnętrznym dysku USB NTFS.

Mam pewne problemy z dużymi plikami, takimi jak AVI / MKV, przechowywanymi na zewnętrznym dysku NTFS. Pliki te wydają się szare w Finderze i zawsze używając Findera, kiedy „otwieram” w moim odtwarzaczu wideo, pojawia się dziwny błąd:

Element „file.avi” jest używany przez system Mac OS X i nie można go otworzyć.

Znalazłem obejście: jeśli przeciągnę i upuszczę file.avido mojego odtwarzacza wideo, wszystko działa dobrze.

Ale tak naprawdę nie mogę zrozumieć, dlaczego pojawia się ten problem.

Proszę wziąć pod uwagę, że nie zainstalowałem żadnych niestandardowych sterowników NTFS (np. MacFUSE lub NTFS-3g). Aby zamontować mój dysk NTFS USB w R / WI, zmodyfikowałem tylko /etc/fstab, dodając następujący wiersz:

LABEL=WD320 none ntfs rw
freedev
źródło
Czy dzieje się tak tylko w przypadku plików multimedialnych (np. Filmów)? Czy możesz konkretnie wykluczyć niektóre typy plików?
slhck
Inną rzeczą, którą możesz spróbować, to po prostu zainstalować NTFS-3g i sprawdzić, czy to działa.
slhck
Nietechnicznym rozwiązaniem jest otwieranie wyszarzonych plików za pomocą bezużytecznego programu Quick Time Player (QTP) za pomocą „szybkiego podglądu>> kliknij dwukrotnie nazwę pliku (lub prawym przyciskiem myszy)> Szybki podgląd Działa to tylko z plikami, które można otworzyć QTP, takie jak mp4 avi itp. Nie otworzy plików mkv.
Aby całkowicie obejść ten problem, możesz utworzyć pliki, przenosząc je z zewnętrznego dysku twardego (zamiast kopiować je z dysku twardego komputera) na dysk NTFS HD.

Odpowiedzi:

26

Znalazłem wątek, który dotyczy tego samego tematu. Pliki są wyszarzone i nie można ich otworzyć z tym samym komunikatem o błędzie.

Oto kroki (miejmy nadzieję), aby to rozwiązać:

  • Otwórz terminal i uruchom

    xcode-select --install
    
  • Powyższe spowoduje zainstalowanie narzędzi wiersza poleceń XCode

  • Następnie uruchomić

    GetFileInfo /Volumes/WD320/yourfile.avi
    
  • Powinny być informacje o typie pliku i twórcy oraz innych atrybutach pliku

  • Teraz zmień te atrybuty, dzwoniąc

    SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
    
  • Teraz plik powinien zostać odtworzony

Oczywiście nie mogłem tego wypróbować (co normalnie zrobiłbym), ale może to pomaga.

slhck
źródło
Czy ktoś chce wyjaśnić, dlaczego głosowanie negatywne? @NSGod faktycznie odniósł się do mojej odpowiedzi jako do wypróbowania - jego (bardzo dobra) odpowiedź wyjaśnia jednak tylko zaplecze techniczne.
slhck,
1
Bardzo dobre.
Wielkie
Czy nie możesz już edytować tych pól we właściwościach pliku Findera? Wygląda na to, że znajdują się w edytowalnych polach tekstowych na zrzucie ekranu podanym w odpowiedzi udzielonej przez @NSGod. Jeśli możesz, to wyjaśniałoby negatywną opinię, gdybyś polecił pobranie niepotrzebnego programu.
trlkly
@trikly: Nie, okno pokazane w mojej odpowiedzi to zrzut ekranu aplikacji Xray Rainera Brockerhoffa ( brockerhoff.net/xray ). Wyszukiwarka Mac OS X nigdy nie miała możliwości edycji typów plików i kodów twórców bezpośrednio za pomocą GUI (możesz być w stanie używać AppleScript). Moim zamiarem było pokazanie obrazu, aby lepiej zilustrować, co się dzieje.
NSGod
1
Nadal działa dobrze w systemie macOS Sierra dla moich plików HDD zamontowanych na NTFS :-) dziękuję!
Benno,
7

Element „file.avi” jest używany przez system Mac OS X i nie można go otworzyć.

Oznacza to, że element miał typ pliku 'brok'i kod twórcy 'MACS'zestawu (i nie został wyczyszczony):

wprowadź opis zdjęcia tutaj

Kiedy używasz Findera do duplikowania plików, kiedy Finder najpierw tworzy duplikat pliku, ustawia specjalny typ pliku 'brok'i kod twórcy 'MACS'(kod twórcy samej Findera), aby wskazać, że plik jest w użyciu. Po zakończeniu tworzenia duplikatu program Finder resetuje typ pliku i kod twórcy do oryginalnego pliku.

Zwykle można spotkać się z sytuacją, w której 'brok'typ pliku nie zostanie zresetowany, jeśli Finder ulegnie awarii lub w jakiś sposób zostanie przerwany podczas kopiowania pliku. Jeśli tak nie jest, to co widzisz, może być błędem we rwwspieraniu wbudowanego sterownika NTFS.

Jak wspomniano slhck, powinieneś być w stanie usunąć tę reakcję przez Findera, usuwając typ pliku i kod twórcy kwestionowanego pliku.

NSGod
źródło
2

Moja odpowiedź na ten problem jest wynikiem zebrania razem odpowiedzi pobranych z kilku innych postów (wielkie dzięki) i mojego własnego doświadczenia.

Tło: Mam zewnętrzny dysk twardy z systemem plików NTFS. Od czasu do czasu chcę to podłączyć. Wcześniej wolumin montował „tylko do odczytu”. Gdy naprawiłem to, pliki na woluminie były w stanie niezdatnym do użytku. Aby poprawnie zamontować wolumin i mieć dostęp do plików, musiałem wykonać następujące czynności:

FYI: Jestem użytkownikiem kornshell. Dostosuj te polecenia do preferowanej powłoki.

$ sudo ksh
<password>

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

$ vi /sbin/mount_ntfs

Następnie wklej zawartość poniżej:

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

Następnie:

$ chmod a+x /sbin/mount_ntfs

$ chown root:wheel /sbin/mount_ntfs

Teraz za każdym razem, gdy podłączam dysk, jest on montowany w trybie „odczyt / zapis”, a pliki na dysku mają resetowany status „brok”. Ten skrypt działa dla mnie dobrze. Twój przebieg może się różnić.

Cieszyć się --

Jeffardo
źródło
1

Wielkie dzięki za to - ulepszyłem powyższy skrypt, ponieważ nie działał na moim komputerze z systemem OSX 10.8.4 (dawał błędy) i był nieco powolny. Trzeba tylko sprawdzić, kiedy zamontowany jest dysk tylko do odczytu ... Zmiany oznaczone 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
źródło
Czy możesz podać zmiany i dlaczego - dzięki.
podejrzany
dzięki za odpowiedź - próbowałem to wyjaśnić w powyższym poście.
JCV
Oznacza to, że czytelnik musi odczytać oba bloki kodu i dokonać mentalnego porównania. Kilka adnotacji opisujących to, co zrobiłeś i dlaczego byłby pomocny.
podejrzany
1
Skrypt działa tylko do momentu ponownego zamontowania dysku - wówczas musi ponownie zmienić parametry. Próbowałem zmienić parametry setFile na -c „????” (aplikacja twórcy nieznana), która daje trwałe rozwiązanie, ale potem myli szybki czas podczas otwierania filmu (nieznany typ pliku bla blag).
JCV