Skip to content
NTFS2exFAT

Cách NTFS2exFAT hoạt động

Năm giai đoạn, và không giai đoạn nào được phép bỏ qua. Trang này giải thích điều gì xảy ra với dữ liệu của bạn ở mỗi bước và những lớp kiểm tra nào đứng giữa bạn và một sai lầm.

Năm giai đoạn

1. Kiểm tra ổ đĩa (chỉ đọc)

Ứng dụng quét ổ đĩa mà không thay đổi gì. Nó đếm tệp và thư mục, đánh dấu những tên mà exFAT không cho phép, bỏ qua các thư mục hệ thống như System Volume Information và $RECYCLE.BIN, và so sánh dung lượng đã dùng mà ổ đĩa báo với những tệp macOS thực sự nhìn thấy. Một khoảng chênh lớn là cảnh báo rằng một phần dữ liệu có thể vô hình với macOS.

  • Không có gì được ghi vào ổ đĩa
  • Các mục không đọc được sẽ được liệt kê, không bị bỏ qua lặng lẽ
  • Bạn biết cần bao nhiêu dung lượng cho bản sao lưu

2. Sao lưu kèm mã kiểm tra

Các tệp được chép vào một thư mục do bạn chọn. Trong lúc chép mỗi tệp, SHA-256 của nó được tính. Tiến trình được lưu trong một manifest chỉ ghi thêm (append-only), nên bạn có thể tạm dừng, thoát và tiếp tục.

  • Bản sao lưu không được nằm trên ổ đĩa sắp bị xóa
  • Đường dẫn sao lưu tránh trùng tên trên các ổ không phân biệt hoa thường
  • Tệp được ghi dưới một tên tạm và chỉ đổi tên khi đã hoàn tất

3. Xác minh bản sao lưu

Mỗi tệp sao lưu được đọc lại từ đĩa, bỏ qua bộ nhớ đệm, và mã kiểm tra của nó được so với mã tính từ bản gốc. Chỉ cần lệch một byte là không đạt.

  • Dữ liệu được đọc từ đĩa, không phải từ bộ nhớ
  • Mọi lỗi đều dừng quy trình trước bước định dạng

4. Xóa có chốt chặn

Bước định dạng chỉ khả dụng khi tất cả điều sau đều đúng: bản sao lưu đã được xác minh đầy đủ, các tệp sao lưu vẫn tồn tại với đúng kích thước, ổ đĩa vẫn có cùng định danh ổ và đĩa cùng kích thước, bản sao lưu không nằm trên ổ đó, và bạn đã gõ đúng tên ổ đĩa. Ứng dụng ghi lại rằng nó sắp xóa trước khi chạm vào ổ đĩa, để một sự gián đoạn có thể được nhận ra sau này.

  • Chỉ các ổ gắn ngoài được đưa ra
  • Lệnh định dạng nhắm đúng ổ đã được sao lưu
  • Nếu việc định dạng cần quyền, macOS sẽ hỏi bạn

5. Chép lại và xác minh

Mọi thứ được chép sang ổ exFAT mới và đọc lại để so sánh mã kiểm tra. Những tên mà exFAT không cho phép sẽ được đổi tên và liệt kê. Một báo cáo cuối cùng được lưu cạnh bản sao lưu.

  • Tệp sao lưu bị hỏng không bao giờ được chép sang ổ mới
  • Bản sao lưu được giữ cho đến khi bạn xóa

“Đã xác minh” nghĩa là gì ở đây

Một tệp được tính là đã xác minh khi nội dung của nó, đọc lại từ ổ đĩa sau khi ghi, cho ra cùng SHA-256 với bản gốc. Ứng dụng không chỉ dựa vào kích thước hay ngày tháng của tệp. Ngoại lệ duy nhất là các tệp siêu dữ liệu macOS có tên ._*: sau khi chép sang exFAT, macOS gộp chúng vào thuộc tính mở rộng, nên chỉ có thể xác nhận là đã ghi, không thể đọc lại.

Tên tệp và siêu dữ liệu

exFAT không cho phép các ký tự " * : < > ? \ |, ký tự điều khiển, hoặc tên kết thúc bằng dấu cách hay dấu chấm. Những tên như vậy sẽ được thay thế và liệt kê trong báo cáo. Những tên chỉ khác nhau ở chữ hoa và chữ thường sẽ được làm cho khác biệt. Ngày sửa đổi của tệp và thư mục được giữ nguyên.

Giới hạn cần nói thật

Trình đọc NTFS tích hợp của macOS có thể ẩn hoặc đổi tên các tệp có tên mà Windows không cho phép. NTFS2exFAT làm việc với những gì macOS hiển thị cho nó. Nó cảnh báo khi dung lượng đã dùng của ổ lớn hơn nhiều so với các tệp nhìn thấy được, nhưng không thể phát hiện từng tệp bị ẩn riêng lẻ. Nếu ổ của bạn được ghi bởi trình điều khiển NTFS của Mac hoặc Linux, hãy kiểm tra nó trong Windows hoặc bằng một trình điều khiển dựa trên ntfs-3g như NTFSTool trước khi chuyển đổi.

Bên trong

Lõi chuyển đổi là một thư viện Swift nhỏ, không phụ thuộc gì ngoài Foundation và CryptoKit. Nó được dùng chung bởi ứng dụng Mac và công cụ dòng lệnh.

  • Manifest: mỗi tệp một dòng JSON gồm đường dẫn, kích thước, mã kiểm tra và trạng thái
  • Sao chép: bộ đệm 4 MiB, đọc và ghi không qua bộ nhớ đệm, fsync, đổi tên nguyên tử
  • Đồng thời: nhiều tệp cùng lúc, mỗi worker xử lý một tệp lớn tại một thời điểm
  • Các kiểm tra an toàn nằm trong lõi, nên ứng dụng và dòng lệnh áp dụng cùng một quy tắc

Cách nó được kiểm thử

Lõi có các bài kiểm thử đơn vị (gồm một bài lật một byte trong bản sao lưu đã xác minh và kỳ vọng bước kiểm tra thất bại) và các bài kiểm thử đầu cuối dựng một ảnh đĩa NTFS thật, chạy toàn bộ quá trình chuyển đổi và so sánh từng tệp được khôi phục bằng SHA-256. Việc kiểm thử trên ổ đĩa gắn ngoài vật lý vẫn đang tiếp tục, đó là một lý do đây là bản beta.

Thích dùng dòng lệnh?

Cùng lõi này có sẵn dưới dạng 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>

Mã nguồn trên GitHub →

Sẵn sàng chuyển ổ đĩa của bạn?