Передача большого количества данных между континентами [дубликаты]

12

Возможный дубликат:
Бесплатный способ поделиться большими файлами через Интернет?
Какие есть варианты для передачи больших файлов без использования интернета?

Лаборатория моей жены делает проект здесь в США с сотрудниками в Сингапуре. Время от времени им требуется передавать большое количество многомерных изображений (сжатых ~ 10 ГБ) по континентам. С текущими технологиями, что было бы хорошим решением для этого сценария использования?

Я могу думать о нескольких, но ни один из них не кажется идеальным:

  • Прямое подключение через Интернет: скорость передачи составляет около 500 КБ / с, также отсутствует инструмент для обработки ошибок / повторных передач.
  • Загрузка на общий сервер или сервис, такой как Dropbox: больно загружать для неамериканских соавторов.
  • Запись дисков или копирование на жесткие диски и доставка через Courier: значительная задержка плюс дополнительная работа по созданию локальной копии.

Какие-либо предложения?

Обновление: ни одна сторона сотрудничества не является технически подкованным пользователем.

Frank
источник
Изображение как на картинках или изображение как в файле, представляющем DVD?
Daniel Beck
Изображения высокого размера, полученные с помощью микроскопов.
Frank
1
Так это несколько очень больших файлов? Не могли бы вы дать нам больше информации о количестве файлов, размерах отдельных файлов и количестве таких изменений между передачами? Это все из них, некоторые из них и т. Д.?
Daniel Beck
Похоже, работа для Sneakernet или же IPoAC ,
Naftuli Kay

Ответы:

20

Я предлагаю вам использовать Rsync , Rsync поддерживает алгоритм дельта-передачи, поэтому, если ваши файлы изменены только частично, или если предыдущая передача была прервана ненормально, Rsync достаточно умен, чтобы синхронизировать только то, что было добавлено / изменено

Существует несколько портов исходного Rsync для Windows и других не-unix-совместимых систем, как бесплатных, так и несвободных Посмотри пожалуйста Rsync Wikipedia статья для деталей.

Rsync over SSH очень широко используется и работает хорошо. 10 ГБ - это относительно небольшой объем данных в наши дни, и вы не указали, что означает «иногда». Еженедельно? Ежедневно? Ежечасно? При скорости передачи 500 КБ / с это займет около 6 часов, что не очень долго. Если вам нужно часто передавать данные, лучше создать задачу cron для автоматического запуска rsync.

haimg
источник
не rsync нужен собственный протокол для дельт, требующий совместимую систему на другом конце?
Daniel Beck
@DanielBeck: в документах нет ничего, что говорило бы, что rsync по SSH не может использовать дельтакопию ... По сути, клиент rsync выполняет другую копию rsync на сервере через ssh, поэтому я не понимаю, почему это не будет работать.
haimg
+1 У тебя есть точка там. Это оставляет требование Linux на сервере, хотя?
Daniel Beck
Есть ли rsync Дельта-алгоритм работы при передаче двоичных сжатых данных ( .zip или же .jpg )?
Aditya
@DanielBeck: я добавил ссылку на статью в Википедии с несколькими портами rsync для Windows. Видимо, по крайней мере некоторые из них работают как сервер, включая ssh. Я никогда не использовал ни одного из них.
haimg
12

Соединение через Интернет может быть жизнеспособным вариантом, и программа, такая как bittorrent, как раз подходит для этой цели, поскольку она разбивает файлы на логические части, которые будут отправлены через Интернет для восстановления на другом конце.

Bittorrent также предоставляет вам автоматическое исправление ошибок, исправление поврежденных частей, и если файлам понадобится больше людей, они получат преимущество от возможности получать файл из такого количества источников, которые уже (частично) загружали файл.

Конечно, люди видят в этом хороший способ загрузки фильмов и тому подобного, но у него есть гораздо больше легальных применений.

Многие клиенты Bittorrent также имеют встроенные трекеры, поэтому вам не нужно иметь выделенный сервер для размещения файлов.

Mokubai
источник
2
Спасибо за вклад. Использование BitTorrent в академических сетях может заставить их администраторов нервничать. Кроме того, настройка и обслуживание сервера трекера может быть не таким простым для обычного пользователя компьютера.
Frank
2
Это хороший момент, битторрент активно запрещен во многих корпоративных и академических сетях. При правильном администрировании вы можете создать белый список в сетях пользователей или машин, которым разрешено использовать битторрент, хотя это будет означать очень тесную связь с соответствующими ИТ-отделами для правильной работы. Как я уже говорил, вам не обязательно иметь выделенный сервер, так как он может быть встроен во многие клиентские программы. Если это не подходит для вашей ситуации, хотя не стоит беспокоиться, мне просто кажется разумным, учитывая ваши требования.
Mokubai
Если вы использовали bitorrent, то также использование веб-семени звучит как умная идея
Journeyman Geek
(В качестве примера одного из «более законного использования», упомянутого в ответе, Facebook использует bittorrent для развертывания своего сайта, 1 Гб двоичного кода, на тысячи производственных серверов. Как жаль, что технология отбрасывается в основном из-за одного из ее использования.)
Tony
6

Разделите файл на куски, например, 50 МБ (используя, например, split ). Вычислить контрольные суммы для всех из них (например, md5sum ). Загружайте напрямую, используя FTP и устойчивый к ошибкам FTP-клиент, такой как lftp в линуксе Передайте все куски и файл, содержащий все контрольные суммы.

На удаленном сайте убедитесь, что все чанки имеют желаемую контрольную сумму, повторно загрузите те, которые не удалось, и заново соберите их в исходный файл (например, используя cat ).

Верните местоположение сервера (я разместил сообщение, предполагая, что конечный сайт предоставил сервер, и вы начнете передачу локально, когда файлы будут готовы) по мере необходимости Ваш FTP-клиент не должен заботиться.


У меня были подобные проблемы в прошлом, и с помощью отказоустойчивого клиента FTP работал. Никакие биты никогда не переворачивались, просто обычное соединение прерывалось, поэтому я мог пропустить создание фрагментов и просто загрузить файл. Мы все еще предоставили контрольную сумму для всего файла, на всякий случай.

Daniel Beck
источник
3
Вы должны знать, что хотя lftp не прерывает незавершенную передачу для любой причина. Убедитесь, что у вас всегда достаточно свободного места на целевом сайте.
Daniel Beck
3

Вариант ответа Даниэля Бека - разделить файлы на куски порядка от 50 до 200 МБ и создать файлы четности для всего набора.

Теперь вы можете передавать файлы (включая файлы четности) с FTP, SCP или чем-то еще на удаленный сайт и выполнять проверку после прибытия всего набора. Теперь, если есть поврежденные части, их можно исправить с помощью файлов четности, если блоков достаточно. Это зависит более или менее от того, сколько файлов повреждено и сколько файлов четности вы создали.

Файлы четности часто используются в Usenet для отправки больших файлов. Большую часть времени они делятся на архивы RAR. Подобным образом отправляются данные размером от 50 до 60 ГБ.

Вы должны обязательно проверить первый ссылку, и вы также можете взглянуть на QuickPar инструмент, который можно использовать для создания файлов четности, проверки загруженных файлов и даже восстановления поврежденных файлов с помощью предоставленных файлов четности.

Martijn B
источник
+1 - этот подход хорошо работает с Usenet, и файлы четности могут восстановить огромное количество недостающих данных. Недостатком является время обработки, необходимое для разделения и создания файлов четности, а также для проверки четности и извлечения файлов после получения.
deizel
1

Это один большой 10GB файл? Может ли это быть легко разделить?

Я не слишком много с этим играл, но мне показалось интересным и относительно простым понятием, которое может сработать в этой ситуации:

http://sendoid.com/

Craig H
источник
Sendoid - это круто, но, к сожалению, загрузка все равно будет болезненной. Опять же, проблема сохраняется для всех типов, я верю, если вы не собираетесь отправлять HDD по почте. +1, так как он прост в использовании.
DMan
0

Сделайте данные доступными через ftp / http / https / sftp / ftps (требуя учетные данные для входа) и используйте любые менеджер загрузки на стороне клиента.

Менеджеры загрузок специально разработаны для извлечения данных независимо от возможных ошибок, поэтому они идеально подходят для вашей задачи.

Что касается сервера, FTP-сервер обычно проще всего настроить. Вы можете проконсультироваться список в Википедии. HTTPS, SFTP и FTPS допускают шифрование (в чистом FTP / HTTP пароль отправляется в виде открытого текста), но SFTP / FTPS реже поддерживается клиентским программным обеспечением, и настройка сервера HTTP / HTTPS довольно сложна.

ivan_pozdeev
источник
1
Проблема с использованием http или ftp состоит в том, что есть какие-либо ошибки передачи, вы должны отправить все заново. Протоколы rsync, bittorrent и другие могут проверить соответствие файлов и только повторно передать поврежденные фрагменты. Данные четности, как генерирует QuickPar, тоже могут помочь.
afrazier
И FTP, и HTTP включают возможность возобновления передачи в качестве дополнительного расширения, которое поддерживается большинством серверов и практически всеми менеджерами загрузки.
ivan_pozdeev
Oни может резюме, и теоретически TCP гарантирует, что данные поступают в порядке и с действительной контрольной суммой. Однако любой, у кого была повреждена большая передача по HTTP или FTP, узнал ценность более надежных протоколов или какого-то ECC.
afrazier