Khi chúng ta sử dụng lệnh mv, những thay đổi diễn ra trong ổ cứng?


7

Trong các điều kiện sau đây-

  1. mv trong cùng phân vùng ổ cứng
  2. mv đến một phân vùng khác trong cùng một ổ cứng
  3. mv đến một thiết bị khác (ví dụ: USB HDD)

Là tập tin hoàn chỉnh được di chuyển hay nó là một thay đổi rất nhỏ như một số xác định lại con trỏ?


Điều đó có thể phụ thuộc vào hệ thống tệp nguồn và đích, và như vậy có lẽ không có ai trả lời. Nếu nguồn và đích là cùng một hệ thống tệp chính xác, thường chỉ có một vài bit kế toán được xáo trộn xung quanh cho hầu hết các hệ thống tệp Unix / Linux phổ biến.
jw013

@ jw013 Cảm ơn bạn đã bình luận. Tôi chỉnh sửa câu hỏi. Tôi không rõ về sự khác biệt giữa hệ thống tệp và phân vùng ổ cứng.
dùng13107

Hệ thống tập tin là một loại 'mô tả' cách tệp được lưu trữ trên đĩa. Ví dụ về hệ thống tập tin có thể là ext3, ext4 hoặc NTFS. Phân vùng là một phần của đĩa, có thể chứa hệ thống tệp.
Paweł Rumian

@gorkypl Vì vậy, có vẻ như một đĩa đơn có thể chứa nhiều phân vùng với cùng / hệ thống tệp khác nhau.
dùng13107

1
Chính xác những gì bạn nói. Câu hỏi của bạn không tệ, nhưng như jw013 đã nói, câu trả lời phụ thuộc vào hệ thống tệp, vì các hệ thống tệp khác nhau có thể thực hiện mvquy trình theo các cách khác nhau.
Paweł Rumian

Câu trả lời:


5

Tùy thuộc vào từng hệ thống tệp, cách xử lý di chuyển trong hệ thống tệp (còn được gọi là đổi tên tệp), nhưng các hệ thống tệp xử lý khá phổ biến bằng cách cập nhật các mục trong thư mục mà không di chuyển nội dung tệp hoặc tệp.

Việc di chuyển giữa các hệ thống tệp (không thành vấn đề nếu nó trên cùng một phương tiện vật lý hay không) được xử lý như một bản sao tệp theo sau là xóa. Đây thực tế là chính xác những gì mvlệnh làm. Rõ ràng điều đó có nghĩa là hệ thống tệp đích phải tạo một bản sao mới của tệp.


Cảm ơn. Vì vậy, nếu mvbị gián đoạn trước khi xóa, tập tin có còn nguyên vẹn tại nguồn không?
dùng13107

1
Có, bạn chắc chắn sẽ giữ tệp nguồn nếu mvbị gián đoạn. Tùy thuộc vào việc có mvđược tự dọn dẹp hay không khi nó bị gián đoạn, bạn cũng có thể tìm thấy một tệp được sao chép một phần tại đích!
Celada

Điều gì về phân vùng khác nhau, nhưng trường hợp hệ thống tập tin giống nhau? Ở đây cũng sao chép-> xóa hoặc chỉ cập nhật các mục trong thư mục?
dùng13107

1
Các hệ thống tập tin thường không mở rộng các phân vùng, vì vậy trường hợp đó thường không thể xảy ra.
Jim Paris

1
@ user13107 Tôi không biết gì về MS Windows và "ổ đĩa", nhưng có vẻ như "C: / drive" và "D: / drive" của bạn có thể chứa các hệ thống tệp cùng loại, nhưng chắc chắn cả hai đều không chứa thực tế cùng một hệ thống tập tin! Có lẽ bạn đang nghĩ về các loại hệ thống tập tin như zfsBtrfs , mà thực sự có thể trải rộng trên nhiều thiết bị khối (ví dụ như phân vùng)? Trong trường hợp này, câu trả lời giống như mọi khi khi đổi tên tệp trong hệ thống tệp: chỉ mục nhập thư mục sẽ di chuyển.
Celada

1

man mv nói:

 As the rename(2) call does not work across file systems, mv uses cp(1) and rm(1) to
 accomplish the move.  The effect is equivalent to:

       rm -f destination_path && \
       cp -pRP source_file destination && \
       rm -rf source_file
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.