Làm thế nào để iOS xóa một tệp về mặt kỹ thuật và nó có khả năng bị xóa không?


11

Chúng tôi có một cuộc thảo luận thú vị ở đây về việc xóa tệp trên thiết bị iOS. Câu hỏi là: nếu tôi xóa một tệp bằng NSFileManager, điều gì đang xảy ra dưới mui xe?

Tôi hiểu rằng việc xóa được thực hiện bằng cách xóa mục nhập tệp tương ứng khỏi bảng hệ thống tệp.

Đối số truy cập là xử lý tệp vẫn theo một cách nào đó và chỉ một cờ được đặt sẽ đánh dấu tệp là đã bị xóa. Nếu người dùng có quyền truy cập root vào thiết bị iOS, anh ta có khả năng đặt lại cờ đó và khôi phục nội dung tệp.

Trong cả hai trường hợp, chúng tôi đồng ý rằng nội dung tệp thực tế sẽ không bị ghi đè và các byte đơn giản vẫn tồn tại trên bộ nhớ / đĩa flash cho đến khi khối bị chiếm bởi một tệp khác.

Ý tưởng là ngay bây giờ: nếu phiên bản thứ hai là đúng, chúng ta có thể ghi đè tệp có nội dung một byte trước khi xóa (ngay cả khi byte đó được ghi vào vị trí mới trên ổ flash mà không thực sự ghi đè nội dung cũ). Nếu sau đó tệp được phục hồi, chỉ có nội dung ghi đè một byte được ghi có sẵn.

Lưu ý rằng chúng tôi không nói về phân tích pháp y về ổ đĩa flash có thể khôi phục nội dung tệp gốc.

Vì vậy, để tóm tắt lại:

  • Làm thế nào để xóa một tập tin trên iOS hoạt động nội bộ?
  • Liệu cách tiếp cận ghi đè ngăn chặn undeletion?

Câu trả lời:


3

Tôi tin vào Unix hệ thống tệp được sửa đổi như bạn đề xuất (mục nhập bị xóa khỏi bảng hệ thống tệp). Trên Windows, bảng hệ thống tệp được sửa đổi và tệp chỉ được gắn cờ là đã xóa - các công cụ khôi phục dữ liệu có thể phục hồi tệp. Nhìn vào các ứng dụng Windows không phục hồi tôi nghĩ rằng tên tệp cũng được sửa đổi, vì vậy khi xóa, bạn cần cung cấp tên tệp chính xác. Sửa đổi tên tệp có nghĩa là nếu bạn đã tạo một tệp có cùng tên với tên bạn vừa xóa, HĐH sẽ không phải điều hòa khi có hai tệp có cùng tên.

MacOSX và Windows có một thùng rác (thùng rác) mà tôi nghĩ là đã triển khai một thư mục đặc biệt để sao chép các tệp bị xóa. Khi bạn dọn sạch thùng rác, thư mục này sẽ bị xóa - bằng cách sửa đổi bảng tệp hệ thống. Nếu bạn sử dụng NSFileManager, nó sẽ phá vỡ thùng rác (dù sao nó không tồn tại trên iOS) vì vậy đó là một sự xóa bỏ thực sự. tương tự như vậy nếu bạn "rm" từ cửa sổ terminal.

Nếu bạn tạo một tệp mới có cùng tên với tệp cũ, trong Unix thì đó chỉ là một mục mới trong bảng tệp hệ thống, nhưng vì mục nhập cũ đã bị xóa khỏi bảng, nên sẽ không có lợi thế để tạo lối đi mới.

Đó là niềm tin của tôi, và tôi đã sẵn sàng cho sự bỏ phiếu giảm giá ;-)


Bạn chắc chắn đúng về thùng rác trên OS X. Nó chỉ là một thư mục đặc biệt, không có gì khác. Và bạn thực sự có thể xem nó như một thư mục trong thư mục chính của bạn khi bạn hiển thị các tệp vô hình của mình.
Can Sürmeli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.