Câu trả lời:
Sao chép từ nguồn vào mục tiêu nơi mục tiêu có sshd đang chạy:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Sao chép từ nguồn vào đích qua sshd_host khi đích không chạy sshd.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Nguồn: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if = là nguồn, of = là đích, bs = là kích thước khối. Kích thước khối khác nhau có thể cải thiện hiệu suất. 16 thường là một điểm khởi đầu khá hợp lý. Bạn cũng có thể sử dụng Count = để cho biết có bao nhiêu khối cần sao chép.
nc - -p chỉ ra cổng sử dụng cho các dịch vụ. -l được sử dụng để bắt đầu một dịch vụ. -w thiết lập thời gian chờ dữ liệu trong đường ống trước khi thoát.
ssh - -L thiết lập đường hầm trên máy chủ từ xa. Các định dạng của đối số là local_port:target_host:target_port
. Chương trình cục bộ của bạn (nc) kết nối với local_port, kết nối này được tạo đường hầm và kết nối với target_port trên target_host.
Các tùy chọn được xác định chỉ là những tùy chọn được sử dụng cho việc này. Nhìn vào các trang người đàn ông để biết thêm chi tiết.
Một vài lưu ý:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Nếu bạn muốn sử dụng netcat mà không cần ssh. Tôi cho rằng đó là cách nhanh nhất và không phải là cách an toàn, bạn có thể sao chép và khôi phục toàn bộ đĩa như thế này:
Trên máy tính A có IP 192.168.0.1
cat /dev/hdb | nc -p 9000
Trên máy tính B
nc -l 192.168.0.1 9000 > /dev/hdb
Hãy nhớ rằng theo man nc, tùy chọn -l là:
-l Được sử dụng để xác định rằng nc nên lắng nghe một kết nối đến thay vì bắt đầu một kết nối đến một máy chủ từ xa. Đó là một lỗi khi sử dụng tùy chọn này kết hợp với các tùy chọn -p, -s hoặc -z.
netcat là không cần thiết.
trên máy src chạy:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
tôi giả sử không có phân vùng trên sdX và sdY được gắn kết. bạn có thể khởi động cả hai hộp với knoppix hoặc bản phân phối trực tiếp tương tự khác.
dd - mất dữ liệu từ nếu [nếu không được cung cấp - mất nó từ stdin], gửi dữ liệu tới của [nếu không được cung cấp - dữ liệu được gửi đến stdout]. bs - kích thước khối ... sẽ tăng tốc mọi thứ.
ssh - thực thi lệnh được cung cấp trong dấu ngoặc kép trên hộp từ xa, tất cả dữ liệu được bơm vào stdin của ssh sẽ được chuyển đến máy từ xa và được chuyển thành stdin để lệnh được thực thi ở đó.
Máy chủ A là hình ảnh, máy chủ B là hình ảnh sẽ được lưu trữ trên:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
Khôi phục vào đĩa sẽ chỉ trao đổi hai.
Các bản sao cơ bản với netcat được mô tả ở đây .
Nếu bạn cần để SSH tham gia vào việc này, bạn có thể sử dụng chuyển tiếp cổng qua đó,
-R [bind_address:]port:host:hostport
Nhưng, về tổng thể, bạn chỉ có thể thực hiện chuyển SSH ở vị trí đầu tiên (không có netcat).
Miễn là các hệ thống tập tin đều chưa được kết nối, dd hoạt động tốt.
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
Bạn sẽ cần thiết lập xác thực mã khóa trước thời hạn nếu không, dấu nhắc mật khẩu sẽ khiến bản sao bị lỗi.
Làm điều này trên một khối lượng gắn kết sẽ tạo ra kết quả kém.
Hoặc, bạn có thể sử dụng clonezilla và "gắn kết" bộ nhớ từ xa của mình thông qua sshfs.
Tôi đã thử kết hợp các tùy chọn được cung cấp ở trên và đang chia sẻ kết quả với bạn. nhanh nhất đến chậm nhất bằng cách sử dụng kết hợp kích thước khối dd, thuật toán nén gzip và gzip.
Như bạn có thể thấy gzip chỉ giúp tôi cải thiện khi sử dụng thuật toán nhanh kết hợp với kích thước khối 1M.
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 326.045 s, 39.5 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 370.158 s, 34.8 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 370.274 s, 34.8 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd bs=1M of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 372.906 s, 34.6 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 520.116 s, 24.8 MB/s
Hai máy chủ nhanh đã được sử dụng kết nối với GigE thông qua bộ chuyển đổi Enterprise GigE bằng đĩa cục bộ qua LVM.
Có vẻ như bạn đang sử dụng búa tạ để bẻ đai ốc ở đây - hoặc có lẽ một sự tương tự tốt hơn là cố gắng cắt cỏ của bạn bằng kéo :)
Tôi thực sự khuyên bạn nên xem xét một số công cụ hiện có để thực hiện một công việc như thế này trừ khi bạn có lý do tuyệt vời để làm việc đó trong nhà.
Trinity Rescue Kit là một đĩa CD trực tiếp miễn phí, hỗ trợ các ổ đĩa hình ảnh qua phát đa hướng, và có thể làm những gì bạn muốn (hoặc thực sự là bất kỳ ai khác nghĩ trên cùng một dòng), mà không cần đến các hệ thống hình ảnh đầy đủ.