Trong các hệ thống tệp kiểu Unix (bao gồm cả trên Linux), các tệp không thực sự "tại" bất kỳ vị trí cụ thể nào. Thay vào đó, hệ thống sử dụng các liên kết cứng để chỉ ra các phần của một lượng lớn dữ liệu. Vì vậy, khi bạn tạo một tệp, bạn cũng tạo liên kết cứng đầu tiên của nó: tệp thực sự nằm ở nơi bạn "lưu" tệp. Nếu bạn tạo ra nhiều liên kết cứng hơn, thì theo như hệ thống biết, tập tin thực sự tồn tại ở một vài nơi cùng một lúc.
Khi bạn "xóa" một tệp, thông thường bạn thực sự chỉ xóa các liên kết cứng tồn tại ở nơi bạn đã chỉ định. Đây là lý do tại sao hệ thống gọi để xóa các tập tin được gọi unlink()
. Hệ thống sẽ không thực sự xóa tệp cho đến khi không còn liên kết cứng nào với nó. Nhưng một khi liên kết cứng cuối cùng bị phá hủy, dữ liệu cũng vậy.
Vì vậy, các tập tin bạn xóa đi đâu? Nếu vẫn còn các liên kết cứng, các tệp đó sẽ ở bất cứ nơi nào mà các liên kết cứng bạn không xóa. Nếu không còn liên kết cứng, các tập tin sẽ biến mất.