Як поширити велике завантаження на декілька комп'ютерів?


38

Мені потрібно завантажити великий файл (1 Гб). Я також маю доступ до декількох комп'ютерів під управлінням Linux, але кожен обмежується швидкістю завантаження 50 кБ / с за допомогою політики адміністратора.

Як я поширюю завантаження цього файлу на декількох комп'ютерах і об'єдную їх після завантаження всіх сегментів, щоб я міг швидше отримати його?


7
Завантажте його в домашніх умовах, і вставте його в за допомогою usb thumbdrive?
WernerCD

2
Я пам’ятаю подібні речі зі старою станцією, яка перебуває на сонці, коли я була в університеті. Просто перевірте, чи є у вас достатньо місця для збереження всього вмісту, одного мого друга вислали після блокування всіх комп'ютерів лабораторії (повний tmp).
Картох

Якщо немає обмеження на завантаження, наскільки швидко може інший кінець надіслати файл? Чи є обмеження на передачу даних між комп’ютерами в локальній мережі?
Нд

@SunWKim Ні. Тут немає конкретних обмежень.
Мейсам

Відповіді:


60

Загальні протоколи HTTP, FTP та SFTP запити підтримки , тому ви можете запитувати частину файлу. Зауважте, що для цього також потрібна підтримка сервера, тому це може чи не працювати на практиці.

Ви можете скористатися curlі опцією -rабо, --rangeщоб вказати діапазон і в кінцевому підсумку просто catпідключити файли разом. Приклад:

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

І врешті-решт, коли ви зібрали окремі частини, ви з’єднаєте їх:

cat distro* > distro.iso

Ви можете отримати додаткову інформацію про файл, включаючи його розмір з --headопцією:

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

Ви можете отримати останній фрагмент з відкритим діапазоном:

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

Прочитайте сторінку " curl man" для отримання додаткових варіантів та пояснень.

Ви можете додатково використовувати ssh і tmux для полегшення запуску та відстеження завантажень на декількох серверах.


15
Примітка: обережно, використовуючи cat distro* > ...перевірити сортування файлів, оскільки *розширені вашою оболонкою можуть сортувати її так: distro1.iso distro10.iso distro11.iso ...і таким чином об'єднати в неправильному порядку.
Себастьян

8
виправлення для записки @ Себастьяна буде:cat distro{1..10}.iso
nonchip

1
Це рішення є специфічним для оболонки і не є портативним. cat $(seq -fdist%g.iso 1 10)має бути більш передбачуваним, але він не вдається csh, хоча. Заміна $(…)на задній панелі, здається, працює в більшості корпусів.
Марко

3
@Marco, seqтакож не є портативною командою. Ви можете використовувати distro001.iso, distro002.iso...distroy010.iso
Стефан Шазелас

Чи політика адміністратора, 50 кБ / с на передачу, або загальна пропускна здатність на комп'ютері. Якщо це перша, відповідь можна використовувати на одному комп’ютері, а не входити в різні робочі станції.
Нд

0

На завантаження 1-гігабайтного файлу зі швидкістю 50 кілобайт в секунду пішло б близько 5,5 годин.

Здається, зусилля по координації декількох комп'ютерів для отримання партій можуть заощадити деякий час.

Ви можете переглядати bittorrent та використовувати веб-посів разом із передачами через обмін одноранцями. Кожен клієнт може отримати деталі та поділитися готовими фрагментами у локальній мережі (LAN). У вас виходить один і той же файл на 1 ГБ на кожному комп’ютері, але злиття частин для вас автоматизоване.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.