Câu trả lời của @ pdo là tốt, nhưng người ta có thể tăng tốc độ với bộ đệm và nén tốt và thêm thanh tiến trình.
Thông thường mạng là nút cổ chai và tốc độ thay đổi theo thời gian. Do đó, nó giúp đệm dữ liệu trước khi gửi chúng qua mạng. Điều này có thể được thực hiện với pv
.
Ngoài ra, người ta thường có thể tăng tốc độ bằng thuật toán nén phù hợp. Gzip (như được sử dụng ở trên) là một thuật toán nén nhanh, nhưng nói chung zst Chuẩn ( zstd
) (và đối với tỷ lệ nén cao, LZMA / LZMA2 ( xz
) sẽ nén tốt hơn và đồng thời nhanh hơn. Xz và zstd mới đã hỗ trợ đa lõi Để sử dụng gzip với nhiều lõi pigz có thể được sử dụng.
Dưới đây là một ví dụ để gửi dữ liệu với thanh tiến trình, bộ đệm và nén theo tiêu chuẩn z qua mạng:
tar cf - . | pv -perabs $(du -sk . | cut -f 1)K | zstd -14 --long=31 -T0 | pv -qCB 512M | ssh user@host "cd /wherever && pv -qCB 512M | zstd -cd -T0 --long=31 | tar xf -"
Đầu tiên pv
là hiển thị tiến trình ( p ), thời gian ước tính ( e ), tốc độ truyền ( r ), tốc độ trung bình ( a ), tổng số byte được truyền ( b ). Tổng kích thước được ước tính du
và thêm vào ( các ) tùy chọn kích thước . Tiến trình được đo trước khi nén và đệm, do đó nó không chính xác lắm, nhưng vẫn hữu ích.
zstd
được sử dụng với cài đặt nén 14 . Con số này có thể giảm hoặc tăng tùy thuộc vào mạng và tốc độ CPU, vì vậy zstd nhanh hơn một chút so với tốc độ mạng. Với bốn lõi trên Haswell 3.2 CPU GHz 14 đưa ra một tốc độ khoảng 120 MB / s. Trong ví dụ, chế độ dài 31 (sử dụng cửa sổ 2 GB, cần rất nhiều RAM, nhưng rất tốt, ví dụ như để nén các cơ sở dữ liệu) được sử dụng. Các tùy chọn T0 đặt số lượng luồng cho số lượng lõi. Mọi người nên biết rằng cùng với chế độ dài, các cài đặt này sử dụng rất nhiều bộ nhớ.
Một vấn đề với zstd là hầu hết các hệ điều hành không xuất xưởng với phiên bản> = 1.3.4. Phiên bản này là cần thiết cho đa lõi thích hợp và hỗ trợ lâu dài. Nếu không có sẵn, nó có thể được biên dịch và cài đặt từ https://github.com/facebook/zstd chỉ với make -j4 && sudo make install
. Thay vì zstd, người ta cũng có thể sử dụng xz hoặc pigz. xz chậm nhưng nén rất tốt (tốt trên các kết nối chậm), pigz / gzip nhanh nhưng nén không tốt lắm.
pv
sau đó được sử dụng lại, nhưng để đệm ( q
đối với C
chế độ yên tĩnh, đối với chế độ không có mối nối [luôn luôn cần thiết cho bộ đệm] và B
để đặt kích thước bộ đệm).
Trong ví dụ, một bộ đệm cũng được sử dụng ở phía bên nhận. Điều này thường không cần thiết (vì giải nén và tốc độ ghi đĩa cứng cao nhất thời gian so với tốc độ mạng), nhưng thường cũng không gây hại.