12

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

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

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

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

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

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

6 ответов6

20

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

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

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

12

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

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

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

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

6

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

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

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


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

3

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

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

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

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

1

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

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

http://sendoid.com/

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .