Làm cách nào để phân phối tải xuống lớn trên nhiều máy tính?


38

Tôi cần tải xuống một tệp lớn (1GB). Tôi cũng có quyền truy cập vào nhiều máy tính chạy Linux, nhưng mỗi máy tính bị giới hạn ở tốc độ tải xuống 50kB / giây bởi chính sách quản trị viên.

Làm cách nào để phân phối tải xuống tệp này trên một số máy tính và hợp nhất chúng sau khi tất cả các phân đoạn đã được tải xuống, để tôi có thể nhận được tệp nhanh hơn?


7
Tải về tại nhà và tải nó qua USB Thumbdrive?
WernerCD

2
Tôi nhớ những thứ như thế này với trạm mặt trời cũ khi tôi ở trường đại học. Chỉ cần kiểm tra xem bạn có đủ dung lượng để lưu tất cả nội dung hay không, một người bạn của tôi đã bị trục xuất sau khi chặn tất cả các máy tính của phòng thí nghiệm (tmp đầy đủ).
Kartoch

Nếu không có hạn chế tải xuống, đầu kia có thể gửi tệp nhanh như thế nào? Có hạn chế chuyển giữa các máy tính trên mạng LAN không?
CN

@SunWKim Không có hạn chế cụ thể ở đó.
Meysam

Câu trả lời:


60

Các giao thức phổ biến HTTP, FTP và SFTP yêu cầu phạm vi hỗ trợ , vì vậy bạn có thể yêu cầu một phần của tệp. Lưu ý rằng điều này cũng yêu cầu hỗ trợ máy chủ, vì vậy nó có thể hoặc có thể không hoạt động trong thực tế.

Bạn có thể sử dụng curlvà tùy chọn -rhoặc --rangeđể chỉ định phạm vi và cuối cùng chỉ catghép các tệp lại với nhau. Thí dụ:

curl -r 0-104857600         -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]

Và cuối cùng khi bạn tập hợp các phần riêng lẻ, bạn ghép chúng lại:

cat distro* > distro.iso

Bạn có thể nhận thêm thông tin về tệp, bao gồm kích thước của tệp với --headtùy chọn:

curl --head 'http://files.cdn/distro.iso'

Bạn có thể truy xuất đoạn cuối cùng với một phạm vi mở:

curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'

Đọc trang man curl để có thêm lựa chọn và giải thích.

Bạn có thể tận dụng hơn nữa ssh và tmux để dễ dàng chạy và theo dõi các bản tải xuống trên nhiều máy chủ.


15
Lưu ý: cẩn thận, khi sử dụng cat distro* > ...kiểm tra việc sắp xếp các tệp vì phần *mở rộng của trình bao của bạn có thể sắp xếp nó như thế này: distro1.iso distro10.iso distro11.iso ...và do đó ghép nối theo thứ tự sai.
Sebastian

8
một sửa chữa cho ghi chú của @ Sebastian sẽ là:cat distro{1..10}.iso
nonchip

1
Giải pháp đó là vỏ cụ thể và không di động. cat $(seq -fdist%g.iso 1 10)nên được dự đoán nhiều hơn, nhưng nó thất bại trong csh, mặc dù. Thay thế $(…)bằng backtics dường như hoạt động trong hầu hết các shell.
Marco

3
@Marco, seqcũng không phải là một lệnh di động. Bạn có thể sử dụng distro001.iso, distro002.iso...distroy010.iso
Stéphane Chazelas

Là chính sách quản trị, 50 kB / s cho mỗi kết nối truyền hoặc tổng băng thông được phép trên máy tính. Nếu là trước đây, câu trả lời có thể được sử dụng trên cùng một máy tính thay vì phải đăng nhập vào các máy trạm khác nhau.
CN

0

Sẽ mất khoảng 5,5 giờ để tải một tệp 1 gigabyte với tốc độ 50 kilobyte mỗi giây.

Có vẻ như nỗ lực phối hợp nhiều máy tính để có được một phần có thể tiết kiệm thời gian.

Bạn có thể xem bittorrent và sử dụng seeding web cùng với chuyển khoản thông qua trao đổi ngang hàng. Mỗi khách hàng có thể nhận được các mảnh và chia sẻ các mảnh đã hoàn thành với trong mạng cục bộ (LAN). Bạn kết thúc với cùng một tệp 1gb trên mỗi máy tính nhưng việc hợp nhất các mảnh là tự động cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.