Có rủi ro khi đổi tên thư mục với 180GB bằng mvlệnh không?
Chúng tôi có một thư mục /datachứa 180GB.
Chúng tôi muốn đổi tên /datathư mục /BD_FILESthành mvlệnh.
Có an toàn để làm điều đó?
Có rủi ro khi đổi tên thư mục với 180GB bằng mvlệnh không?
Chúng tôi có một thư mục /datachứa 180GB.
Chúng tôi muốn đổi tên /datathư mục /BD_FILESthành mvlệnh.
Có an toàn để làm điều đó?
Câu trả lời:
Thay đổi tên trên một thư mục là an toàn, nếu nó nằm trong cùng một hệ thống tệp.
Nếu đó là một điểm gắn kết (có /datavẻ như nó có thể là một điểm gắn kết với tôi, hãy kiểm tra điều này với mount), thì bạn cần phải làm một cái gì đó ngoài việc đơn giản mvvì mv /data /BD_FILESsẽ di chuyển dữ liệu đến phân vùng gốc (có thể không phải là cái gì bạn muốn xảy ra)
Bạn nên ngắt kết nối hệ thống tệp, đổi tên thư mục hiện trống, cập nhật /etc/fstabvị trí mới cho hệ thống tệp này và sau đó kết nối lại hệ thống tệp tại vị trí được đổi tên.
Nói cách khác,
umount /datamv /data /BD_FILES(giả sử /BD_FILESkhông tồn tại, trong trường hợp đó, hãy di chuyển nó ra khỏi đường đi trước)/etc/fstab, thay đổi điểm gắn kết từ /datađến/BD_FILESmount /BD_FILESĐiều này không liên quan đến việc sao chép bất kỳ tệp nào xung quanh, nó chỉ thay đổi tên của thư mục đóng vai trò là điểm gắn kết cho hệ thống tệp.
Nếu việc đổi tên thư mục liên quan đến việc di chuyển nó sang một hệ thống tệp mới (ví dụ như trường hợp /datanằm trên một đĩa trong khi /BD_FILESở trên một đĩa khác, chẳng hạn, một việc thường làm nếu bạn chuyển mọi thứ sang phân vùng lớn hơn chẳng hạn) , Tôi khuyên bạn nên sao chép dữ liệu trong khi giữ nguyên bản gốc cho đến khi bạn có thể kiểm tra xem bản sao đó có ổn không. Bạn có thể làm điều này với
rsync -a /data/ /BD_FILES/
ví dụ, nhưng xem rsynchướng dẫn để biết những gì nó làm và không làm (ví dụ: nó không bảo tồn các liên kết cứng).
Khi thư mục được đổi tên, bạn cũng cần đảm bảo rằng các quy trình hiện có (chương trình và người dùng sử dụng thư mục, bản sao lưu, v.v.) biết về việc thay đổi tên.
mvchỉ thực hiện một renamecuộc gọi hệ thống, nhưng do hoàn cảnh người ta không nhận ra rằng nó sẽ sao chép các tệp và xóa bản gốc. Nếu tôi cần tuyệt đối chắc chắn chỉ cần một renamecuộc gọi hệ thống được thực hiện và mvsẽ không làm điều gì đó "thông minh" sau lưng tôi, tôi mở một vỏ Python và sử dụng os.rename.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsynclà nó có thể khởi động lại.
rsync -abảo tồn hầu hết tất cả các siêu dữ liệu, nhưng không phải liên kết cứng, ACL hoặc thuộc tính mở rộng (thêm -HAXvào đó).
renamelệnh khác nhau với hành vi khác nhau. Tôi nghĩ đó là lý do đủ để không sử dụng renamelệnh khi bạn muốn chắc chắn những gì nó sẽ làm.
Nếu bạn chỉ đổi tên (nguồn và đích trong cùng một hệ thống tệp), thì đó chỉ đơn giản là đổi tên của một mục nhập thư mục. Nó thành công và thư mục có tên mới hoặc không thành công trong trường hợp không có gì thay đổi * .
Nếu nguồn và đích nằm trên các hệ thống tệp khác nhau, dữ liệu cần được sao chép theo mv. Sự khác biệt về tính năng hệ thống tệp, chẳng hạn như kích thước tệp tối đa, giới hạn về tên tệp, v.v., có thể gây ra sự cố. Để tránh vấn đề này, sao chép tập tin đầu tiên ( cp, rsync, ...) và sau khi sao chép hoàn tất thành công, loại bỏ các tập tin trong vị trí ban đầu.
* Tuy nhiên, có một số trường hợp góc, ví dụ được đề cập trong phần BUGS trong đổi tên người đàn ông 2
Như những người khác đã nói, việc đổi tên một thư mục không gây ra rủi ro cố hữu cho nội dung. Nhưng có một loại rủi ro khác nhau mà bạn có thể muốn xem xét.
Các quy trình, tập lệnh, phím tắt do người dùng xác định và cấu hình tham chiếu vị trí ban đầu có thể bị phá vỡ bởi thay đổi này và ví dụ: nếu các đường dẫn được lưu trữ trong cơ sở dữ liệu, thì việc cập nhật chúng có thể là một công việc lớn.
Một điều bạn có thể làm là tạo một liên kết tượng trưng cho tên thư mục mới, nhưng để lại tên cũ trong một thời gian. Điều đó sẽ cho bạn thời gian để đánh giá tác động của sự thay đổi này. Bạn có thể tạm thời xóa tên cũ, xem có vấn đề gì không và nếu có, chỉ cần tạo lại tên cũ để mọi người có thể tiếp tục làm việc trong khi bạn tìm ra những gì cần được cập nhật.
Một lệnh như thế này sẽ làm điều đó:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1. Bằng cách đó, tôi đã có tên mới và có thể dễ dàng kiểm tra sự vắng mặt của cái cũ bằng cách xóa liên kết tượng trưng.
Đổi tên là nguyên tử. Rủi ro hợp lý duy nhất là mvquyết định sao chép mọi thứ vì một số lý do và sự cố xảy ra nửa chừng. Nếu bạn có GNU mv, mv -Tsẽ loại bỏ rủi ro này.
mv -Tnói mvrằng nó đang di chuyển đến một thư mục không; Điều này sẽ khiến nó từ chối thực hiện mkdir(), điều này sẽ khiến nó bị lỗi nếu di chuyển một thư mục và nó đã quyết định sao chép vì một số lý do.
Tôi đã tham gia vào việc xua đuổi bọ xít mv -Ttrong khi làm luận án thạc sĩ nhiều năm trước. Nó được sử dụng để làm điều sai trên quá nhiều trường hợp cạnh.
Mặt khác, bạn có 180GB dữ liệu người dùng trên phân vùng gốc. Bạn có thể muốn di chuyển cái này ra khỏi phân vùng gốc.
mvvới-itùy chọn.