Mac OS X - ปัญหาเกี่ยวกับการอนุญาตให้ใช้ไฟล์ในไดรฟ์ USB NTFS


10

ฉันสามารถอ่าน / เขียนไฟล์ภายในไดรฟ์ USB ภายนอก NTFS

ฉันมีปัญหากับไฟล์ขนาดใหญ่เช่น AVI / MKV ที่เก็บไว้ในไดรฟ์ภายนอก NTFS ไฟล์เหล่านั้นปรากฏเป็นสีเทาใน Finder และมักจะใช้ Finder เมื่อฉัน "เปิดด้วย" เครื่องเล่นวิดีโอของฉันฉันได้รับข้อผิดพลาดแปลก:

รายการ“ file.avi” ถูกใช้โดย Mac OS X และไม่สามารถเปิดได้

ฉันพบวิธีแก้ปัญหา: ถ้าฉันลากและวางลงfile.aviในเครื่องเล่นวิดีโอของฉันทุกอย่างทำงานได้ดี

แต่จริงๆฉันไม่สามารถคิดออกว่าทำไมปัญหานี้จะปรากฏขึ้น

โปรดพิจารณาว่าฉันยังไม่ได้ติดตั้งไดรเวอร์ NTFS แบบกำหนดเอง (เช่น MacFUSE หรือ NTFS-3g) ในการติดตั้งไดรฟ์ NTFS USB ของฉันใน R / WI ได้แก้ไขเท่านั้น/etc/fstabเพิ่มบรรทัดต่อไปนี้:

LABEL=WD320 none ntfs rw

เกิดขึ้นเฉพาะกับไฟล์สื่อ (เช่นวิดีโอ) หรือไม่ คุณสามารถแยกประเภทไฟล์บางประเภทออกโดยเฉพาะได้หรือไม่?
slhck

อีกสิ่งหนึ่งที่คุณสามารถลองได้คือติดตั้ง NTFS-3g และดูว่าใช้งานได้หรือไม่
slhck

วิธีแก้ปัญหาที่ไม่ใช้เทคนิคคือการเปิดไฟล์ greyed-out ด้วย Quick Time Player (QTP) โดยใช้ 'Quick view'> ชื่อไฟล์คลิกสองครั้ง (หรือขวา)> Quick Look ใช้งานได้กับไฟล์ที่ QTP สามารถเปิดได้เช่น mp4 avi ฯลฯ มันจะไม่เปิดไฟล์ mkv

เพื่อหลีกเลี่ยงปัญหานี้อย่างสมบูรณ์คุณสามารถสร้างไฟล์โดยถ่ายโอนไฟล์จากฮาร์ดดิสก์ภายนอก (แทนการคัดลอกไฟล์จาก puter ของ HD) ไปยัง NTFS HD ของคุณ ลำบาก แต่ก็สามารถเข้าถึงไฟล์ได้โดยตรง

คำตอบ:


26

ฉันพบกระทู้ที่เกี่ยวข้องกับหัวข้อเดียวกันมาก ไฟล์ปรากฏเป็นสีเทาและไม่สามารถเปิดได้พร้อมกับข้อความแสดงข้อผิดพลาดเดียวกัน

นี่คือขั้นตอนในการแก้ไขปัญหา (หวังว่า):

  • เปิด Terminal และเรียกใช้

    xcode-select --install
    
  • ด้านบนจะติดตั้งเครื่องมือบรรทัดคำสั่ง XCode

  • จากนั้นเรียกใช้

    GetFileInfo /Volumes/WD320/yourfile.avi
    
  • ควรมีข้อมูลเกี่ยวกับประเภทไฟล์และผู้สร้างและคุณสมบัติไฟล์อื่น ๆ

  • ตอนนี้เปลี่ยนคุณลักษณะเหล่านั้นโดยการโทร

    SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
    
  • ตอนนี้ไฟล์ควรเล่น

เห็นได้ชัดว่าฉันไม่สามารถลอง (ซึ่งปกติฉันจะทำ) แต่อาจช่วยได้


ใครสนใจที่จะอธิบายว่าทำไมการลงคะแนน @ NSGod จริง ๆ แล้วหมายถึงคำตอบของฉันเป็นสิ่งที่ต้องลอง - คำตอบ (ดีมาก) ของเขาเพียงอธิบายพื้นฐานทางเทคนิคแม้ว่า
slhck

1
ดีมาก. ขอบคุณมากสำหรับคำแนะนำนี้ :)
freedev

คุณไม่สามารถแก้ไขฟิลด์เหล่านี้ในคุณสมบัติไฟล์ Finder ได้อีกต่อไปหรือไม่ พวกเขาดูเหมือนจะอยู่ในกล่องข้อความที่สามารถแก้ไขได้ในภาพหน้าจอที่ได้รับในคำตอบที่ได้รับจาก @NSGod หากคุณสามารถทำได้นั่นจะอธิบาย downvote หากคุณแนะนำให้ดาวน์โหลดโปรแกรมที่ไม่จำเป็น
trlkly

@trikly: ไม่หน้าต่างที่ปรากฏในคำตอบของฉันเป็นภาพหน้าจอของแอป Xray ของ Rainer Brockerhoff ( brockerhoff.net/xray ) Mac OS X Finder ไม่เคยมีความสามารถในการแก้ไขประเภทไฟล์และรหัสผู้สร้างโดยตรงผ่าน GUI (คุณอาจใช้ AppleScript) ความตั้งใจของฉันในการแสดงภาพคือพยายามอธิบายสิ่งที่เกิดขึ้นให้ดีขึ้น
NSGod

1
ยังคงทำงานได้ดีใน macOS Sierra สำหรับไฟล์ HDD ที่ติดตั้งบน NTFS ของฉัน :-) ขอบคุณ!
Benno

7

รายการ“ file.avi” ถูกใช้โดย Mac OS X และไม่สามารถเปิดได้

ซึ่งหมายความว่ารายการนี้มีประเภทไฟล์'brok'และรหัสผู้สร้างที่'MACS'ตั้งค่าไว้ (และไม่ได้ล้าง):

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อคุณใช้ Finder เพื่อทำซ้ำไฟล์เมื่อ Finder สร้างไฟล์ที่ซ้ำกันครั้งแรกมันจะกำหนดประเภทไฟล์พิเศษ'brok'และรหัสผู้สร้างของ'MACS'(รหัสผู้สร้างของ Finder เอง) เพื่อแสดงว่าไฟล์นั้นถูกใช้งาน เมื่อ Finder เสร็จสิ้นการสร้างไฟล์ที่ซ้ำกันมันจะรีเซ็ตประเภทไฟล์และรหัสผู้สร้างเป็นไฟล์ต้นฉบับ

โดยปกติคุณจะพบกับสถานการณ์ที่'brok'ประเภทไฟล์ไม่ได้ถูกรีเซ็ตหาก Finder เกิดข้อผิดพลาดหรือถูกขัดจังหวะอย่างอื่นระหว่างการคัดลอกไฟล์ หากไม่เป็นเช่นนั้นสำหรับคุณสิ่งที่คุณเห็นอาจเป็นข้อบกพร่องในการrwสนับสนุนไดรเวอร์ NTFS ในตัว

ดังที่ slhck กล่าวไว้คุณควรจะสามารถล้างปฏิกิริยานี้โดย Finder โดยการล้างประเภทไฟล์และรหัสผู้สร้างของไฟล์ในคำถาม


2

การตอบสนองต่อปัญหานี้ของฉันเป็นผลมาจากการปูด้วยกันคำตอบที่นำมาจากการโพสต์อื่น ๆ (ขอบคุณมาก) และประสบการณ์ของฉันเอง

พื้นหลัง: ฉันมีฮาร์ดไดรฟ์ภายนอกที่มีระบบไฟล์ NTFS ฉันต้องการที่จะเสียบมันเป็นครั้งคราว ก่อนหน้านี้ปริมาณจะเมานต์ 'อ่านอย่างเดียว' เมื่อฉันได้รับการแก้ไขแล้วไฟล์ในโวลุ่มนั้นอยู่ในสถานะที่ใช้ไม่ได้ เพื่อให้ไดรฟ์ข้อมูลติดตั้งอย่างถูกต้องและสามารถเข้าถึงไฟล์ได้ฉันต้องทำสิ่งต่อไปนี้:

FYI: ฉันเป็นผู้ใช้ kornshell ปรับคำสั่งเหล่านี้เป็นเชลล์ที่คุณต้องการ

$ 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

คุณช่วยพูดถึงการเปลี่ยนแปลงที่เกิดขึ้นและทำไม - ขอบคุณ
suspectus

ขอบคุณสำหรับคำตอบ - ฉันพยายามอธิบายในโพสต์ด้านบน
JCV

นั่นหมายถึงผู้อ่านต้องอ่านทั้งบล็อคโค้ดและทำการเปรียบเทียบจิตใจ คำอธิบายประกอบบางอย่างเพื่ออธิบายสิ่งที่คุณทำและทำไมจะเป็นประโยชน์
สงสัย

1
สคริปต์ใช้งานได้จนกว่าดิสก์จะถูกประกอบใหม่ - จากนั้นจะต้องเปลี่ยนพารามิเตอร์อีกครั้ง ฉันลองเปลี่ยน setFile params เป็น -c "????" (ไม่ทราบแอปพลิเคชันผู้สร้าง) ซึ่งให้วิธีแก้ปัญหาแบบถาวร แต่จะทำให้เกิดความสับสนได้อย่างรวดเร็วในขณะที่เปิดภาพยนตร์ (ไม่ทราบประเภทไฟล์ blag blag)
JCV
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.