Làm cách nào để chuyển Linux sang phân vùng khác?


9

Tôi cần tạo một bản sao của một hệ thống linux đang hoạt động, trong đó (được chứa trong / và vị trí mới được chuẩn bị trong / mnt / sdb5) dường như chứa một lượng đáng kể các liên kết cứng, mềm và các tệp đặc biệt trong / dev; sẽ cpioxử lý công việc này mà không áp dụng phép thuật bổ sung?

Các biện pháp bảo vệ được biết đến hiện nay:

  • sẽ không xóa / sửa đổi hệ thống đang chạy cho đến khi bản sao được coi là có khả năng khởi động và hoạt động với root=/dev/sdb5; trước khi gỡ bỏ, hãy sao lưu phân vùng đầy đủ.
  • sẽ sử dụng cpio để lưu trữ riêng từng thư mục gốc, do đó sẽ giải nén nó khỏi môi trường LiveCD để phân vùng của nhà tài trợ sẽ không bị tổn hại

Tuy nhiên, sẽ không mất thời gian chỉ vì cpio đã bỏ lỡ một số cờ và làm tê liệt các quyền / loại nút / mềm hoặc liên kết cứng.

Nên sử dụng công cụ nào / loại đá dưới nước nào?



@warren, cảm ơn. sẽ thực hiện một thử nghiệm cpio-vs-tar khác ngay bây giờ;)
kagali-san

không phải lo lắng: hy vọng nó sẽ giúp :)
warren

Câu trả lời:


10

Để trả lời câu hỏi thực tế liên quan đến cpio: Đây là những lá cờ tôi sẽ sử dụng cho cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Tất nhiên, vì bạn không sao chép qua mạng, tôi sẽ chỉ sử dụng cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

Và nếu bạn muốn có thể thực hiện sao chép nhiều lần, rsynclà lựa chọn tốt hơn cho khả năng tiếp tục của nó. (Nó cũng, giống như cp, xử lý ACL và các thuộc tính mở rộng và có thể tùy chọn hoạt động qua mạng như thế cpio. Vì vậy, đây là tùy chọn hữu ích nhất, ngoại trừ việc sao chép đầu tiên cục bộ, mà tôi thích sử dụng cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Đừng quên sao chép /boot/dev!

/bootlà dễ dàng, chỉ cần sao chép nó. Nhưng /devngày nay khó khăn hơn nhiều vì nó bị che giấu bởi udev. Tôi đề nghị các thủ tục sau đây:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Sao chép /devđể /mnt/sdb5sử dụng một trong các lệnh trên
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev

6

Như @Klox đã đề cập, khi sao chép các phân vùng có cùng kích thước tôi đồng ý sử dụng dd.

Nhưng khi bạn muốn sao chép một đĩa vào một phân vùng khác với kích thước khác nhau, tôi muốn đi cùng rsync. Gắn kết phân vùng mới (giả sử, / mnt / new) và:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Không có phép thuật quảng cáo cho các liên kết tượng trưng và không cần cd trực tiếp (một người dùng / init 1 sẽ làm tốt).


À, vâng. Tôi sử dụng rsynctất cả thời gian và bỏ lỡ rõ ràng. Tôi thích ddvì những lý do tôi đã nêu, nhưng rsyncphù hợp hơn với nhu cầu của OP.
Klox

3

Biến thể tối ưu hơn ddđang sử dụng partimage, nó sẽ chỉ sao chép phần được sử dụng của phân vùng khiến việc sao chép các phân vùng lớn không sử dụng trở nên tiện lợi hơn.

Lưu ý cảnh báo quan trọng:

Partimage KHÔNG hỗ trợ Ext4, mặc định trên các bản cài đặt Ubuntu mới.

Một bản sao thuận tiện được bao gồm trong bản phân phối CD cứu hộ hệ thống .


2

Khi di chuyển cài đặt Linux giữa các ổ đĩa cứng, tôi luôn khởi động từ Live CD và sử dụng ddđể sao chép toàn bộ phân vùng. Tôi nhận ra rằng điều này không giải quyết các thay đổi về kích thước đĩa (chắc chắn đĩa mới lớn hơn, giúp đơn giản hóa mọi thứ), nhưng tôi thích kỹ thuật này vì chính xác những lý do bạn quan tâm khi sử dụng cpio: có thể có lỗi. Sử dụng ddkỹ thuật này, đó là tất cả hoặc không có gì: hoặc là đĩa mới khởi động và mọi thứ đều giống nhau, hoặc đĩa không khởi động. Không có nguy cơ ẩn giấu các vấn đề xuất hiện sau đó.

Bây giờ, tất nhiên, có vấn đề về phân vùng không lấp đầy đĩa mới, nhưng tôi chỉ muốn tạo một phân vùng mới để lấp đầy không gian thừa và dựa vào các liên kết tượng trưng để di chuyển các thư mục xung quanh. (Tôi chắc chắn cũng có công cụ để thay đổi kích thước phân vùng, nhưng tôi chưa sử dụng chúng.)


Hệ thống tôi nói về chỉ có khoảng 50 hợp đồng miễn phí trên phân vùng XFS 500 gb (không thể thu nhỏ, hiện chỉ phát triển được hỗ trợ qua xfs_grow) và phân vùng gốc cũng là XFS; thậm chí tệ hơn, nó là một Gentoo được thiết lập tốt, gần như là chất béo. Thậm chí tệ hơn, việc di chuyển phải được thực hiện mà không cần thêm dung lượng lưu trữ và hiện không thể sao lưu hơn 60 hợp đồng biểu diễn - vì vậy không có hoạt động phân vùng. Cần đặt Win 'vào máy đó để thử nghiệm một số thứ.
kagali-san

Ngoài ra, dd là tốt, nhưng đối với các hoạt động ổ đĩa / phân vùng, tôi có xu hướng sử dụng nhiều hơn .. giải pháp độc quyền. Acronis TrueImage dường như hoạt động tốt hơn (nén, chia sẻ samba - từ flash livecd / liveusb).
kagali-san
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.