Skip to content
NTFS2exFAT

NTFS2exFAT ทำงานอย่างไร

ห้าระยะ และไม่ยอมข้ามระยะใดเลย หน้านี้อธิบายว่าเกิดอะไรขึ้นกับข้อมูลของคุณในแต่ละขั้น และมีการตรวจสอบอะไรบ้างที่กั้นระหว่างคุณกับความผิดพลาด

ห้าระยะ

1. ตรวจไดรฟ์ (อ่านอย่างเดียว)

แอปสแกนไดรฟ์โดยไม่เปลี่ยนแปลงสิ่งใด นับไฟล์และโฟลเดอร์ ทำเครื่องหมายชื่อที่ exFAT ไม่อนุญาต ข้ามโฟลเดอร์ระบบ เช่น System Volume Information และ $RECYCLE.BIN และเปรียบเทียบพื้นที่ใช้งานที่ไดรฟ์รายงานกับไฟล์ที่ macOS มองเห็นจริง หากต่างกันมากถือเป็นคำเตือนว่าอาจมีข้อมูลบางส่วนที่ macOS มองไม่เห็น

  • ไม่มีการเขียนอะไรลงไดรฟ์
  • รายการที่อ่านไม่ได้จะถูกระบุไว้ ไม่ถูกข้ามเงียบ ๆ
  • คุณเห็นว่าต้องใช้พื้นที่สำรองเท่าไร

2. สำรองข้อมูลพร้อมค่าเช็กซัม

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

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

3. ตรวจสอบข้อมูลสำรอง

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

  • อ่านจากดิสก์ ไม่ใช่จากหน่วยความจำ
  • หากมีความล้มเหลวใด ๆ กระบวนการจะหยุดก่อนถึงขั้นตอนฟอร์แมต

4. การลบที่มีด่านป้องกัน

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

  • เสนอเฉพาะไดรฟ์ภายนอก
  • คำสั่งฟอร์แมตมุ่งไปที่วอลุ่มที่สำรองข้อมูลไว้ตรงตัว
  • หากการฟอร์แมตต้องใช้สิทธิ์ macOS จะถามคุณ

5. คัดลอกกลับและตรวจสอบ

ทุกอย่างถูกคัดลอกไปยังวอลุ่ม exFAT ใหม่ แล้วอ่านกลับอีกครั้งเพื่อเปรียบเทียบค่าเช็กซัม ชื่อที่ exFAT ไม่อนุญาตจะถูกเปลี่ยนและระบุไว้ รายงานฉบับสุดท้ายถูกบันทึกไว้ข้างข้อมูลสำรอง

  • ไฟล์สำรองที่เสียหายจะไม่ถูกคัดลอกไปยังไดรฟ์ใหม่
  • ข้อมูลสำรองถูกเก็บไว้จนกว่าคุณจะลบ

“ตรวจสอบแล้ว” ในที่นี้หมายถึงอะไร

ไฟล์ถือว่าผ่านการตรวจสอบเมื่อเนื้อหาที่อ่านกลับจากไดรฟ์หลังเขียนแล้วให้ค่า SHA-256 เท่ากับต้นฉบับ แอปไม่อาศัยขนาดหรือวันที่ของไฟล์เพียงอย่างเดียว ข้อยกเว้นเดียวคือไฟล์เมทาดาทาของ macOS ที่ชื่อ ._* ซึ่งหลังคัดลอกไปยัง exFAT แล้ว macOS จะรวมเข้ากับแอตทริบิวต์ส่วนขยาย จึงยืนยันได้เพียงว่าเขียนแล้ว แต่อ่านกลับมาตรวจสอบไม่ได้

ชื่อไฟล์และเมทาดาทา

exFAT ไม่อนุญาตอักขระ " * : < > ? \ | อักขระควบคุม หรือชื่อที่ลงท้ายด้วยช่องว่างหรือจุด ชื่อเช่นนี้จะถูกแทนที่และระบุไว้ในรายงาน ชื่อที่ต่างกันเพียงตัวพิมพ์เล็กหรือใหญ่จะถูกทำให้ไม่ซ้ำกัน วันที่แก้ไขของไฟล์และโฟลเดอร์จะถูกเก็บรักษาไว้

ขีดจำกัดตามจริง

ตัวอ่าน NTFS ในตัวของ macOS อาจซ่อนหรือเปลี่ยนชื่อไฟล์ที่มีชื่อซึ่ง Windows ไม่อนุญาต NTFS2exFAT ทำงานกับสิ่งที่ macOS แสดงให้เห็น แอปจะเตือนเมื่อพื้นที่ใช้งานของไดรฟ์มากกว่าไฟล์ที่มองเห็นมาก แต่ไม่สามารถตรวจพบไฟล์ที่ถูกซ่อนเป็นรายไฟล์ได้ หากไดรฟ์ของคุณถูกเขียนด้วยไดรเวอร์ NTFS บน Mac หรือ Linux ให้ตรวจสอบใน Windows หรือด้วยไดรเวอร์ที่ใช้ ntfs-3g เช่น NTFSTool ก่อนแปลง

เบื้องหลังการทำงาน

เอนจินการแปลงเป็นไลบรารี Swift ขนาดเล็กที่ไม่พึ่งพาสิ่งอื่นนอกจาก Foundation และ CryptoKit ใช้ร่วมกันระหว่างแอป Mac และเครื่องมือบรรทัดคำสั่ง

  • แมนิเฟสต์: หนึ่งบรรทัด JSON ต่อหนึ่งไฟล์ ประกอบด้วยพาธ ขนาด ค่าเช็กซัม และสถานะ
  • การคัดลอก: บัฟเฟอร์ 4 MiB อ่านและเขียนแบบไม่ผ่านแคช fsync และเปลี่ยนชื่อแบบอะตอมมิก
  • การทำงานพร้อมกัน: หลายไฟล์พร้อมกัน โดยไฟล์ขนาดใหญ่ทำทีละไฟล์ต่อหนึ่งเวิร์กเกอร์
  • การตรวจสอบความปลอดภัยอยู่ในเอนจิน แอปและบรรทัดคำสั่งจึงบังคับใช้กฎเดียวกัน

ทดสอบอย่างไร

เอนจินมียูนิตเทสต์ (รวมถึงการทดสอบที่พลิกหนึ่งไบต์ในข้อมูลสำรองที่ตรวจสอบแล้ว และคาดหวังว่าการตรวจสอบต้องล้มเหลว) และการทดสอบแบบครบวงจรที่สร้างอิมเมจดิสก์ NTFS จริง รันการแปลงทั้งกระบวนการ และเปรียบเทียบทุกไฟล์ที่กู้คืนด้วย SHA-256 การทดสอบบนไดรฟ์ภายนอกจริงยังดำเนินอยู่ ซึ่งเป็นเหตุผลหนึ่งที่ยังเป็นเบต้า

ชอบใช้บรรทัดคำสั่งมากกว่าหรือไม่

เอนจินเดียวกันมีให้ใช้เป็น ntfs2exfat-cli

ntfs2exfat-cli list
ntfs2exfat-cli start disk4 ~/Backups
ntfs2exfat-cli backup ~/Backups/NTFS2exFAT-<job>
ntfs2exfat-cli erase ~/Backups/NTFS2exFAT-<job> --confirm "MY DRIVE"
ntfs2exfat-cli restore ~/Backups/NTFS2exFAT-<job>

ซอร์สโค้ดบน GitHub →

พร้อมเปลี่ยนไดรฟ์ของคุณหรือยัง