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, mbuffervà 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à mbufferhoặc buffer. Chúng phần lớn tương tự nhưng mbuffercó một số lợi thế. Kích thước bộ đệm mặc định là 2MB cho mbuffervà 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}?buffercộ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 cathoặc chuyển hướng I / O. Chi phí tarso với catkhông đáng kể về mặt thống kê nên tôi luôn sử dụng tar(hoặc zfs -sendnơ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à catsẽ 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 sshcho 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í sshso với nckhông đáng kể về mặt thống kê.