Làm sao? Hoặc TL; DR
Phương pháp nhanh nhất tôi tìm thấy là sự kết hợp của tar
, mbuffer
và ssh
.
Ví dụ:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
Sử dụng điều này tôi đã đạt được chuyển mạng cục bộ bền vững trên 950 Mb / giây trên các liên kết 1Gb. Thay thế các đường dẫn trong mỗi lệnh tar để phù hợp với những gì bạn đang chuyển.
Tại sao? mbuffer!
Nút thắt lớn nhất trong việc chuyển các tệp lớn qua mạng là, cho đến nay, đĩa I / O. Câu trả lời cho điều đó là mbuffer
hoặc buffer
. Chúng phần lớn tương tự nhưng mbuffer
có một số lợi thế. Kích thước bộ đệm mặc định là 2MB cho mbuffer
và 1MB cho buffer
. Bộ đệm lớn hơn có nhiều khả năng không bao giờ trống. Chọn kích thước khối là bội số chung thấp nhất của kích thước khối gốc trên cả hệ thống tệp đích và hệ thống tệp đích sẽ cho hiệu suất tốt nhất.
Đệm là điều mà làm cho tất cả sự khác biệt! Sử dụng nó nếu bạn có nó! Nếu bạn không có nó, hãy lấy nó! Sử dụng (m}?buffer
cộng với bất cứ điều gì tốt hơn bất cứ điều gì của chính nó. nó gần như là thuốc chữa bách bệnh cho việc truyền tệp mạng chậm.
Nếu bạn đang chuyển nhiều tệp, hãy sử dụng tar
để "gộp" chúng lại thành một luồng dữ liệu. Nếu đó là một tệp duy nhất bạn có thể sử dụng cat
hoặc chuyển hướng I / O. Chi phí tar
so với cat
không đáng kể về mặt thống kê nên tôi luôn sử dụng tar
(hoặc zfs -send
nơi tôi có thể) trừ khi nó đã là một tarball . Cả hai thứ này đều được đảm bảo cung cấp cho bạn siêu dữ liệu (và đặc biệt là cat
sẽ không). Nếu bạn muốn siêu dữ liệu, tôi sẽ để nó như một bài tập cho bạn.
Cuối cùng, sử dụng ssh
cho một cơ chế vận chuyển vừa an toàn và mang rất ít chi phí. Một lần nữa, chi phí ssh
so với nc
không đáng kể về mặt thống kê.