Thư mục /usr
của tôi cần được chuyển sang phân vùng mới. Làm thế nào tôi có thể làm điều này mà không xóa nội dung?
Điều này có thể được thực hiện trong khi Ubuntu đang chạy hay tôi cần sử dụng LiveCD cho việc này?
Sẽ an toàn nhất khi sử dụng Live CD, nhưng bạn có thể làm:
/usr
không thay đổi trong khi bạn đang làm điều này./etc/fstab
để /usr
sẽ được gắn vào lần khởi động lại tiếp theoXem bên dưới để biết chi tiết về từng bước.
Lưu ý rằng bạn không thể gắn kết phân vùng mới trên /usr
trong khi chạy vì sẽ có rất nhiều tệp trong /usr
sẽ được mở.
Tôi sẽ sử dụng cp -a
. -a
là tùy chọn lưu trữ. Từ trang nam :
-a, --archive
same as -dR --preserve=all
...
-d same as --no-dereference --preserve=links
...
-P, --no-dereference
never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
preserve the specified attributes (default:
mode,ownership,timestamps), if possible additional attributes:
context, links, xattr, all
...
-R, -r, --recursive
copy directories recursively
Bạn cần biết UUID của phân vùng mới của bạn. Bạn có thể xem ánh xạ bằng cách thực hiện:
$ ls -l /dev/disk/by-uuid/
Và sau đó thêm dòng này vào /etc/fstab
:
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Thay đổi UUID thành UUID của bạn và thay đổi ext4
thành loại hệ thống tệp bạn đang sử dụng - bạn nên biết điều này nếu bạn đã thiết lập phân vùng.
Sau khi khởi động lại, các tệp cũ trong /usr
trên phân vùng gốc sẽ bị ẩn bởi phân vùng mới được gắn trên /usr
. Nhưng chúng ta có thể sử dụng một số mount bind trickery để truy cập các tệp cũ và sau đó xóa chúng.
$ Sudo mount --bind / /mnt
$ Sudo rm -rf /mnt/usr/*
$ Sudo umount /mnt
Nhưng một số sai lầm nhỏ (giả sử, nhấn Enter khi bạn chỉ gõ Sudo rm -rf /mnt
) có thể gây ra thảm họa, vì vậy tôi sẽ chỉ sử dụng phương pháp này nếu bạn rất tự tin vào những gì bạn đang làm, thực sự không thể đối phó với bất kỳ thời gian chết hoặc không có quyền truy cập vật lý vào máy và do đó không thể khởi động đĩa CD hoặc thẻ USB trực tiếp.
Vì hầu hết các thư viện được sử dụng là trong/usr, tôi không khuyên bạn nên di chuyển thư mục này trong khi chạy Ubuntu. Trong thực tế, bạn có thể nhận được thông báo lỗi khi bạn cố gắng làm điều này. Do đó, tốt nhất là sử dụng LiveCD.
Bạn có thể sử dụng một số khả năng để di chuyển/sao chép các tập tin cp, rsync, v.v. bạn muốn đảm bảo rằng bất kỳ liên kết tượng trưng nào được tạo và không chỉ sao chép. cp và rsync đều có tùy chọn cho việc này.
Sau khi di chuyển các tệp sang phân vùng khác, bạn cần thêm một mount khác trong/etc/fstab để gắn phân vùng mới vào/usr.
Chú ý: Tôi không biết tôi đang làm gì, tôi chỉ sao chép các lệnh và thực hiện theo đề xuất của người khác. Đây có thể là cách không chính xác để làm điều đó, nhưng nó hiệu quả với tôi (ít nhất là bây giờ).
Đây là cách tôi đã thực hiện (theo câu trả lời của Hamish và các bình luận):
Sao chép tất cả các tệp mà phân vùng vừa tạo (thay thế bằng vị trí của phân vùng của bạn, nó sẽ trông giống như của tôi):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
Lúc này tôi mới nhận ra rằng nó đã sao chép mọi thứ vào thư mục /usr
trên phân vùng, sẽ không hoạt động, vì vậy tôi đã sao chép mọi thứ (với trình quản lý tệp) từ thư mục đó đến thư mục gốc của phân vùng và thư mục trống đã bị xóa sau đó.
Chỉnh sửa /etc/fstab
(giống như trong câu trả lời của Hamish, tất nhiên, thay thế bằng UUID của bạn)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Một bước có vẻ không khôn ngoan lắm: Tôi đã thay đổi tên của phân vùng /usr
hiện đang được gắn thành /usrBACKUP
, để tôi biết rằng, khi tôi khởi động lại hệ thống, thực tế nó khởi động lại vào phân vùng mới được tạo, và không phải là phân vùng cũ. Sau đó, mọi thứ rối tung trên màn hình và tôi phải tắt nguồn bằng cách nhấn phím nguồn (thiên tài như tôi). Bỏ qua bước này nếu bạn không muốn trục trặc hệ thống của mình.
Khởi động lại hệ thống
Sau khi khởi động lại, hãy mở System Monitor hoặc ứng dụng tương tự để xem phân vùng /usr
mới của bạn có được gắn hay không và kiểm tra an toàn xem mọi thứ có đúng như kế hoạch không.
Sau khi kiểm tra xem mọi thứ có ổn không, bạn có thể xóa phân vùng /usr
cũ của mình. Tôi sẽ giữ cho tôi chỉ trong trường hợp có điều gì đó không ổn.