Bagaimana? Atau TL; DR
Metode tercepat yang saya temukan adalah kombinasi dari tar
, mbuffer
dan ssh
.
Misalnya:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
Dengan ini saya telah mencapai transfer jaringan lokal yang berkelanjutan lebih dari 950 Mb / s pada tautan 1Gb. Ganti jalur di setiap perintah tar agar sesuai untuk apa yang Anda transfer.
Mengapa? mbuffer!
Hambatan terbesar dalam mentransfer file besar melalui jaringan adalah, sejauh ini, disk I / O. Jawabannya adalah mbuffer
atau buffer
. Mereka sebagian besar mirip tetapi mbuffer
memiliki beberapa keunggulan. Ukuran buffer default adalah 2MB untuk mbuffer
dan 1MB untuk buffer
. Buffer yang lebih besar cenderung tidak pernah kosong. Memilih ukuran blok yang merupakan kelipatan umum terendah dari ukuran blok asli pada sistem file target dan tujuan akan memberikan kinerja terbaik.
Buffering adalah hal yang membuat semua perbedaan! Gunakan jika Anda memilikinya! Jika Anda tidak memilikinya, dapatkan! Menggunakan (m}?buffer
plus apa pun lebih baik daripada apa pun dengan sendirinya. hampir secara harfiah merupakan obat mujarab untuk transfer file jaringan yang lambat.
Jika Anda mentransfer banyak file, gunakan tar
untuk "menyatukan" keduanya menjadi satu aliran data. Jika itu adalah file tunggal yang dapat Anda gunakan cat
atau I / O redirection. Overhead tar
vs cat
secara statistik tidak signifikan jadi saya selalu menggunakan tar
(atau di zfs -send
mana saya bisa) kecuali itu sudah tarball . Tidak satu pun dari ini dijamin memberi Anda metadata (dan khususnya cat
tidak akan). Jika Anda ingin metadata, saya akan meninggalkan itu sebagai latihan untuk Anda.
Akhirnya, menggunakan ssh
untuk mekanisme transportasi aman dan membawa sedikit overhead. Sekali lagi, overhead ssh
vs nc
secara statistik tidak signifikan.