Как ускорить передачу файлов с сервера на сервер через Интернет? [дубликат]

Как я могу передать файл с одного сервера на другой с большой скоростью? сейчас я использую FTP для передачи файла, но это занимает так много времени. На передачу файла размером 2 ГБ уходит около 3 часов. Есть ли другая процедура для передачи файла, которая работает быстрее, чем FTP. Расположение сервера: один в Индии, другой в США.

0
задан 14 February 2013 в 20:42
8 ответов

Это нормально для вашего местоположения? Если вы переносите 2 ГБ на другие сайты, какую скорость вы обычно видите? Какова скорость сети в вашем местоположении и в удаленном месте?

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

Лучше всего:

  1. Перед передачей данных сожмите данные на локальном сервере, чтобы они были меньше по размеру.
  2. Используйте rsync для сжатия данных на муха. См. Примеры на http://en.wikipedia.org/wiki/Rsync#Examples
  3. Разделите данные на части, которые вы передаете по одному. Это победило t ускорит передачу данных, но это сделает передачу более отказоустойчивой (вам не нужно будет перезапускать с самого начала, если передача не удалась на 99%). Сжатие может помочь.
  4. Другой интернет-провайдер или сеть могут предложить более высокую скорость передачи. Попробуйте другой интернет-провайдер или сеть.
1
ответ дан 4 December 2019 в 21:27

SF community members may not be happy for taking you back to the stone age's of Unix, but for lower protocol overhead and a good compression, you might want to try a combination of dd + netcat + bzip2. Yes, this is not going to be secure, so you have to close the ports for all except for the two nodes. No guarantee, no security, no authentication ... but it is faster.

1 - compress your file using bzip2 to get say , file.bz2

2 - Listen using netcat on node2

     nc -l 6668 | dd of=/dir/file.bz2
  1. Push it from node1

     dd if=/dir/file.bz2 | nc node2 6668
    
1
ответ дан 4 December 2019 в 21:27
  • Войдите на один из серверов, используя SSH
  • Откройте передачу файлов с сервера, на котором вы вошли, на другой сервер (например, lftp, scp и т. Д.)
  • Отправьте файл.

Последние два, вероятно, одно и то же, но я хотел сделать из этого 3 шага. Это так же просто, как «просто отправьте файл».

0
ответ дан 4 December 2019 в 21:27

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

Я не ожидал, что, если оставить все остальное без изменений, простое переключение с FTP на другой протокол даст вам такого повышения скорости вы, кажется, ожидаете.

Откуда вы знаете, что проблема не в пропускной способности? Можете ли вы попробовать провести тест с помощью scp или rsync и сравнить с FTP?

0
ответ дан 4 December 2019 в 21:27

Do you have TCP window scaling enabled at both ends? Even if you have a lot of bandwidth, connections between the U.S. and India will inherently have a huge bandwidth delay product. If window scaling is enabled and you're still seeing poor FTP performance you might try running rsync in parallel.

Also, stop using FTP. It's a horrible protocol. :)

0
ответ дан 4 December 2019 в 21:27

If youre trying to transfer a single 2GB file ftp is one of the most clean and fast protocols, you can also safely use resume feature in case of interruption during the transfer.

Ftp is a bad idea if you're trying to transfer a great number of little files, because you have a huge useless activity opening and closing connections for each file.

Rsync(via ssh) or scp(sftp) are good alternatives, but you must consider that encryption significantly reduce throughput. You can use a light algorithm like blowfish ('scp -c blowfish' or 'rsync -e "ssh -c blowfish"') but the speed will always lower than ftp.

Netcat is an alternative, but only on lan.

0
ответ дан 4 December 2019 в 21:27

Если ваш файл похож на тот, который уже находится в месте назначения, вы можете использовать rsync с параметром --fuzzy. Fuzzy будет искать файл с таким же именем в целевом каталоге и использовать его в качестве отправной точки для копирования, отправляя по сети только различия между двумя файлами.

В качестве примера я копирую xwiki-enterprise-web-3.4.war в удаленный каталог, который уже содержит xwiki-enterprise-web-3.2.1.war.

$ rsync -av --fuzzy xwiki-enterprise-web-3.4.war example.com:Downloads/xwiki-enterprise-web-3.4.war
sent 69065310 bytes  received 74176 bytes  389518.23 bytes/sec
total size is 138567168  speedup is 2.00

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

$ du -sh xwiki-enterprise-web-3.*
107M    xwiki-enterprise-web-3.2.1.war
133M    xwiki-enterprise-web-3.4.war
0
ответ дан 4 December 2019 в 21:27

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

-1
ответ дан 4 December 2019 в 21:27

Теги

Похожие вопросы