Một thư mục (về mặt khái niệm) là một "tệp" đặc biệt chứa danh sách các tên và số inode mà các tên đó trỏ đến. Một số tên có thể là thư mục con. Có một mục đặc biệt ..
trỏ đến thư mục cha.
Vì vậy, rõ ràng, thay đổi tên của một tập tin rất dễ dàng: bạn chỉ cần thay đổi tên trong mục nhập thư mục, không có gì khác. Điều này cho biết tập tin thực sự là một tập tin hay là một "tập tin" được sử dụng để lưu trữ nội dung của thư mục khác. Thật vậy, cùng một tòa nhà rename
chọc trời làm cả hai.
Sao chép, tuy nhiên, là một hoạt động tầm thường ít hơn nhiều. Bạn chỉ có thể sao chép thư mục "tệp", nhưng sau đó bạn có hai thư mục chứa các tệp giống nhau (chúng sẽ là liên kết cứng). Nếu bạn có một hệ thống cho phép các liên kết cứng vào các thư mục, thì chúng sẽ như vậy, nhưng vì không có hệ thống hiện đại nào cho phép, ít nhất là không root, bạn phải thực hiện bản sao đó cho mỗi thư mục con. Bạn thực sự có thể yêu cầu cp
hành vi này với cp -lR
: -l
cho liên kết cứng, -R
cho đệ quy đó.
Nhưng để lại mọi thứ liên kết có thể không phải là những gì bạn muốn. Thay vào đó, bạn muốn cp
sao chép từng tập tin. Đó là một hoạt động khá tốn kém: mỗi tệp phải được đọc vào bộ nhớ và được ghi lại ra đĩa ở vị trí thứ hai. Nó thực sự cần một số tòa nhà, để mở, đọc, viết và đóng các tệp, và điều đó phải được lặp lại cho mỗi tệp.
Các hệ thống tập tin truyền thống cũng hoạt động theo cách này trên đĩa. Không có cách nào để sao chép một loạt các tệp, ngoài việc đi qua từng tệp riêng lẻ và sao chép nó, và đó là các loại hệ thống tệp được sử dụng khi các tiện ích dòng lệnh cơ bản được thiết kế.
mv
ing từ một hệ thống tập tin khác nhau "chỉ cần thay đổi tên trong mục nhập thư mục"?