Bagaimana cara saya mendistribusikan unduhan besar ke banyak komputer?

38

Saya perlu mengunduh file besar (1GB). Saya juga memiliki akses ke banyak komputer yang menjalankan Linux, tetapi masing-masing dibatasi pada kecepatan unduh 50kB / s oleh kebijakan admin.

Bagaimana cara saya mendistribusikan pengunduhan file ini di beberapa komputer dan menggabungkannya setelah semua segmen diunduh, sehingga saya dapat menerimanya lebih cepat?

Meysam
sumber
7
Unduh di rumah, dan sneakernet via usb thumbdrive?
WernerCD
2
Saya ingat hal-hal seperti ini dengan stasiun lama matahari ketika saya berada di universitas. Cukup periksa apakah Anda memiliki cukup ruang untuk menyimpan semua konten, salah satu teman saya telah dikeluarkan setelah memblokir semua komputer lab (tmp penuh).
Kartoch
Jika tidak ada batasan unduhan, seberapa cepat ujung yang lain dapat mengirim file? Apakah ada batasan transfer antar komputer di LAN?
Sun
@SunWKim No. Tidak ada batasan khusus di sana.
Meysam

Jawaban:

60

Protokol umum HTTP, FTP, dan SFTP meminta kisaran permintaan , sehingga Anda dapat meminta bagian dari file. Perhatikan bahwa ini juga memerlukan dukungan server, sehingga mungkin atau mungkin tidak berfungsi dalam praktik.

Anda dapat menggunakan curldan opsi -ratau --rangeuntuk menentukan rentang dan akhirnya hanya catmenyatukan file. Contoh:

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

Dan akhirnya ketika Anda mengumpulkan bagian-bagian individual Anda menggabungkannya:

cat distro* > distro.iso

Anda dapat memperoleh informasi lebih lanjut tentang file, termasuk ukurannya dengan --headopsi:

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

Anda dapat mengambil potongan terakhir dengan rentang terbuka:

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

Baca halaman manual ikal untuk opsi dan penjelasan lebih lanjut.

Anda lebih lanjut dapat memanfaatkan ssh dan tmux untuk memudahkan menjalankan dan melacak unduhan di beberapa server.

Marco
sumber
15
Catatan: hati-hati, saat menggunakan cat distro* > ...periksa pengurutan file sebagai *diperluas oleh shell Anda bisa mengurutkannya seperti ini: distro1.iso distro10.iso distro11.iso ...dan dengan demikian menyatukan dalam urutan yang salah.
Sebastian
8
perbaikan untuk catatan @ Sebastian adalah:cat distro{1..10}.iso
nonchip
1
Solusi itu spesifik untuk shell dan tidak portabel. cat $(seq -fdist%g.iso 1 10)harus lebih dapat diprediksi, tetapi gagal csh, meskipun. Mengganti $(…)dengan backtics tampaknya berfungsi di sebagian besar shell.
Marco
3
@ Mars, seqbukan perintah portabel juga. Anda dapat menggunakan distro001.iso, distro002.iso...distroy010.iso
Stéphane Chazelas
Apakah kebijakan admin, 50 kB / s per koneksi transfer, atau total bandwidth yang diperbolehkan di komputer. Jika yang pertama, jawabannya dapat digunakan pada komputer yang sama daripada harus masuk ke workstation yang berbeda.
Sun
0

Dibutuhkan sekitar 5,5 jam untuk menunggang memuat file 1 gigabyte pada 50 kilobyte per detik.

Tampaknya upaya untuk mengoordinasikan banyak komputer untuk mendapatkan sebagian dapat menghemat waktu.

Anda dapat melihat bittorrent dan memanfaatkan seeding web bersama dengan transfer melalui pertukaran rekan. Setiap klien dapat menerima karya dan membagikan karya yang telah selesai dengan di jaringan area lokal (LAN). Anda berakhir dengan file 1gb yang sama di setiap komputer tetapi penggabungan potongan otomatis untuk Anda.

Matahari
sumber