2012-05-22 13 views
5

Nếu chúng ta thực thi một lệnh:Thi hành 'mv A B': Liệu 'inode' có bị thay đổi không?

mv A B 

sau đó điều gì sẽ xảy ra với các trường trong inode của file A? Nó sẽ thay đổi?

Tôi không nghĩ rằng nó sẽ thay đổi chỉ bằng cách thay đổi tên của tệp, nhưng tôi không chắc chắn.

Trả lời

8

Nó phụ thuộc ít nhất một phần vào những gì A và B. Nếu bạn đang di chuyển giữa các hệ thống tập tin, inode gần như chắc chắn sẽ khác nhau.

Đơn giản chỉ cần đổi tên tệp trên cùng một hệ thống có nhiều khả năng giữ cùng một inode đơn giản vì inode thuộc về dữ liệu chứ không phải mục nhập thư mục và hiệu quả sẽ dẫn đến thiết kế đó. Tuy nhiên, nó phụ thuộc vào hệ thống tập tin và không có cách nào bắt buộc theo tiêu chuẩn. Ví dụ: có thể là hệ thống tệp phiên bản có khái niệm inode cung cấp cho bạn inode mới vì nó muốn theo dõi thay đổi tên

+0

Nếu chúng ta có cùng một hệ thống tệp thì sao? – Luv

+1

@Luv - Tôi tìm thấy lời giải thích trên [trang này] (http://teaching.idallen.com/dat2330/04f/notes/links_and_inodes.html) khá hữu ích. Một thư mục đơn giản là ánh xạ từ 'name' đến 'inode'. Vì vậy, một 'mv' mà không cần di chuyển dữ liệu vật lý sẽ đơn giản là một sự thay đổi trong một mục nhập thư mục. Không phải thay đổi trong 'inode'. – ArjunShankar

+1

@paxdiablo - Đây là câu trả lời hay. Quan điểm của bạn về hệ thống tập tin phiên bản là thú vị. Nó sẽ là khá tốn kém để có hành vi sane ví dụ, nếu có liên kết cứng trỏ đến tập tin đó là 'mv'ed. – ArjunShankar

0

Điều đó tùy thuộc.

Có một ví dụ hay về this site cho biết rằng inode có thể giữ nguyên. Nhưng tôi sẽ không dựa vào hành vi này, tôi nghi ngờ rằng nó được quy định trong bất kỳ tiêu chuẩn nào.

Các vấn đề liên quan