Làm thế nào để sao chép toàn bộ hệ thống tập tin gốc linux vào ổ cứng mới với ssh và tar


18

Tôi cần chuyển toàn bộ hệ thống tập tin gốc linux khỏi một ổ cứng bị lỗi sang một máy tính khác có phân vùng mở, có sẵn. Tôi khá chắc chắn điều này liên quan tarssh, nhưng tôi không thể nhớ chính xác làm thế nào để làm điều này.

Tôi đang hình ảnh có thể sử dụng một đĩa CD trực tiếp trên máy chủ mới / máy chủ đích để chạy một cái gì đó như thế này:

ssh user@failingharddrivehost "some tar command | piped into something else"


đề ra. không phải là một câu hỏi lập trình. nhưng hãy thửssh user@failingsys "tar cfz - /" > oldsys.tar.gz

Bạn muốn lưu ý rằng bạn không tar / dev / (ví dụ / dev / ngẫu nhiên, / dev / sdX, ...). Ditto / Proc /
Hennes

Câu trả lời:


19

Sử dụng rsync. Từ máy chủ mới, bạn có thể sử dụng

rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/

Tôi sẽ không thử liên quan đến một cái gì đó như tar vì nó có thể sẽ không hoạt động khi có các tệp bị hỏng.


Đã kết thúc bằng cách sử dụng rsync, như mô tả ở trên bởi etagenklo và @Hennes. Di cư đã diễn ra tốt đẹp. Chỉ cần sửa grub, nhưng điều đó không nên quá tệ.
CHK

8
Tôi cũng sẽ thêm -AHX làm cờ vào rsync để bảo toàn acls, xattrs và liên kết cứng dẫn đến bản sao chính xác hơn của fs gốc.
Alexander Remesch

5
Tôi đã thêm -x để bỏ qua các mục không có trong hệ thống tệp gốc, sau đó bạn có thể bỏ qua các đối số --exclude cho các đường dẫn khác nhau.
Alex

4

Nếu cả hai máy tính nằm trên cùng một mạng LAN (an toàn), tôi khuyên bạn nên sử dụng một cách tiếp cận khác netcat. Điều này thường nhanh hơn nhiều vì nó không mã hóa dữ liệu.

root@good_host$ cd good_partition; netcat -l -p 1234 | tar xvpmf -
root@bad_host$ tar -cv -f- --exclude=/proc --exclude=/sys / | netcat good_host.ip 1234

mở cổng nghe 1234 trên máy tốt netcat -l -p 1234và chuyển dữ liệu đến tarđể trích xuất (bảo toàn thời gian và quyền). Máy chủ xấu gửi dữ liệu đến cổng này, cũng sử dụng tarnetcat. Tôi đã bao gồm một --excludesố tham số, như /proc/syslà các hệ thống tệp ảo và do đó vô dụng trên máy chủ mới. (đặc biệt là tệp đại diện cho RAM của bạn trong ( /proc/kcore) sẽ thêm một lượng dữ liệu không cần thiết).

Tuy nhiên, bạn cũng nên (cũng) xem xét để tạo một ddbãi chứa các phân vùng của ổ đĩa bị lỗi:

user@good_host$ cd good_partition; netcat -l -p 1234 > dump_of_bad_partition_1.dd
root@bad_host$ dd if=/dev/sda1 | netcat good_host.ip 1234

nơi bạn phải chấp nhận /dev/sda1thiết bị phù hợp. Làm điều đó với các phân vùng khác trên ổ đĩa bị lỗi, quá.

Với kết xuất đó, bạn chắc chắn rằng bạn đã không bỏ lỡ bất kỳ siêu dữ liệu quan trọng nào (như ACL) tarsẽ không nắm bắt được.


3

Tại sao bạn kết hợp với thư mục loại trừ? Không phải là ý tưởng tốt hơn gắn thiết bị tương tự vào một thư mục khác? hạt nhân hiện đại cho phép cách này. ví dụ: bạn đã gắn kết

/ dev / sda1 as / then do: mkdir / CLEANROOT mount / dev / sda1 / CLEANROOT

sau này bạn có: / dev / sda1 as / / dev / sda1 as / CLEANROOT

Đây là cùng một hệ thống tập tin có thể nhìn thấy với hai vị trí, nhưng / CLEANROOT không có giá trị gắn kết phụ gia. Sau đó, bạn có thể tar hoặc rsync / CLEANROOT mà không có bất kỳ loại trừ nào thay vì sao chép / với loại trừ.

Tất nhiên bạn phải sao chép một phân vùng dữ liệu khác khi bạn có một số.

Sao chép phân vùng là bước đầu tiên để phục hồi máy chủ. khác là tái tạo các thành phần khởi động, nếu không hệ thống sẽ không khởi động từ đĩa sao chép. Usefull là chế độ cứu hộ khi bạn khởi động từ đĩa cài đặt / cứu CD hoặc ổ đĩa.


1

Bạn có quyền truy cập vật lý vào máy chủ bị lỗi?

Nếu bạn làm thì khởi động từ đĩa CD trực tiếp. Sau đó sử dụng:

  • dump (kết xuất / khôi phục toàn bộ hệ thống tập tin bao gồm cả quyền của nó).
  • Tar với / dev loại trừ. Bạn có thể kết hợp điều này với đầu ra cho std thừng và đường ống mặc dù netcat
    Cú pháp loại trừ là : tar --exclude='/dev'.
  • hoặc rsync với cùng loại trừ. Ví dụ
    rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
  • hoặc sử dụng dd như thế này:
    nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
    dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination

Nếu bạn không thể khởi động từ đĩa CD trực tiếp thì một số giải pháp trên sẽ giữ nguyên, nhưng:

  1. Một số tệp có thể đang được sử dụng / bị khóa.
  2. Đảm bảo loại trừ không chỉ / dev / mà còn / Proc /.
    Ví dụtar --exclude='/dev' --exclude='/proc'

Có, tôi có quyền truy cập vật lý (và root) vào cả hai máy chủ. Sẽ thử với rsync. con mèo bị rơi vì hộp không rõ nguyên nhân. hệ thống tập tin đích không muốn được gắn kết. nó thất bại với: #mount /dev/sda1 /mnt/fedora mount: unknown filesystem type 'LVM2_member'
CHK


0

bạn nên cân nhắc sử dụng rsync

lệnh follwaging giả định 2 điều:

  1. bạn đang ở trên hệ thống với lỗi ổ cứng
  2. phân vùng mới có cài đặt linux tối thiểu với ssh được kích hoạt.

rsync / new_partition:/wherever/you/want/

Lưu ý: dấu / là quan trọng, nếu không các tệp của bạn sẽ ở một cấp thư mục ở trên


OP có thể muốn sử dụng -atham số (và có lẽ là -A), vì nó bảo toàn thời gian, quyền sở hữu, liên kết tượng trưng (và có lẽ ACL), v.v. và -e sshtham số, vì dữ liệu nên được chuyển sang máy tính khác. Vì vậyrsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint
mpy
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.