Nói theo các thuật ngữ trừu tượng nhất, bất cứ khi nào bạn xóa một tệp trên giao diện đồ họa, tệp sẽ được "chuyển" sang một "bộ đệm" đặc biệt, một thư mục có tên trash
. Bạn có thể xác định vị trí của nó trong home
thư mục của bạn , ~/.local/share/Trash/
. Các tập tin "bị xóa" khỏi thư mục này, sẽ thực sự bị xóa. Việc xóa thực sự này là những gì xảy ra khi bạn sử dụng rm
trên một tập tin.
Rất khó để khôi phục các tập tin bị xóa. Các tệp trong hệ thống tệp được biểu diễn dưới dạng các nút trên cây B hoặc tương tự. Khi một tệp bị xóa bằng cách sử dụng rm
, cây được cập nhật, số lượng liên kết cứng bị giảm, mục tương ứng trong danh sách thư mục sẽ bị xóa. Nếu ở tất cả, tập tin của bạn có một liên kết cứng, tập tin của bạn là hoàn toàn an toàn. Bạn có thể làm một file / -samefile filename
. Bạn có thể tìm kiếm tệp nếu bạn cũng nhớ số inode của nó (điều này khó xảy ra).
Một trường hợp khác là khi không có khả năng nào ở trên là đúng. Bất cứ khi nào bạn rm
một tệp, mục nhập tệp trên thư mục sẽ bị xóa, giảm số lượng liên kết cứng xuống một. Và nếu số lượng liên kết cứng giảm xuống 0, thì con trỏ tới tệp trên nút bị loại bỏ hoặc được đánh dấu là sẽ bị xóa. Dù bằng cách nào, tập tin "vẫn" của bạn nằm trên đĩa cứng. Các tập tin thực sự bị xóa khỏi đĩa cứng chỉ trong lần tái bản tiếp theo. Phục hồi tệp tại một thời điểm như vậy là vô cùng khó khăn, bao gồm việc đi qua cây hệ thống tệp và các nút đại diện cho các vị trí khối đĩa thực tế. Có một công cụ phổ biến mà tôi đã nghe nói, nhưng chưa bao giờ sử dụng nó, được gọi là extundelete
. Mặc dù không có gì đảm bảo, nó đáng để thử.
Khi bạn khôi phục các tệp của mình thành công hay không, hãy nhanh chóng thực hiện sao lưu thường xuyên. Nó cực kỳ đơn giản trên Ubuntu.