Задать вопрос

Как быстро заливать на сервер (Debian) большие объемы данных?

Всю дорогу использовал scp и меня это, более-менее, устраивало, но в ближайшем будущем, мне придется перекинуть около 1,5 Тб информации (около 15 файлов, но монструозного размера).
scp - слишком долго! Даже отправка файла в 50 Гб - жуть. Процессоры на компах плавятся.
Как решение предлагают использовать менее безопасные алгоритмы шифрования. Типа arcfour, но я не понимаю, как заставить ssh использовать этот алгоритм. В новом ssh ни го, ни blowfish нет. Попытки их прописать в ssh_config ни к чему не приводят. SSH начинает ругаться.
По идее, меня вполне устроит передача, вообще, без шифрования. Там до информации и без шифрования долезть не просто.
Решил поставить на сервер vsftpd. Не знаю почему, но меня аж корежит от FTP. Не задумываясь настроил по https://howitmake.ru/blog/debian/63.html. Заработало. Эврика!...
Но нет. Файл размером 20 Гб копируется уже больше часа!
Копирую средствами mc. Даже дольше выходит чем scp.
При этом, скорости каналов за глаза! На удаленном сервере 1 Гб, на домашнем компе 500 Мб. И все совершенно ужасно.
Может это ftp тупит в mc?
Кстати, по непонятной причине, быстрее всего копирование идет с использованием sshfs. Почему???
Что не правильно в настройке vsftpd по вышеприведенной статье? Или виноват mc?
  • Вопрос задан
  • 1359 просмотров
Подписаться 4 Простой 3 комментария
Решения вопроса 4
@jimquery
Разбей архиватором (tar, zip) на более мелкие части и загружай постепенно.
Ответ написан
Комментировать
Immortal_pony
@Immortal_pony
Чисто для разнообразия: можно воспользоваться для заливки протоколом торрентов https://en.wikipedia.org/wiki/Resilio_Sync
Ответ написан
Комментировать
@muhlik
Как уже выше писали rsync, мне кажется ничего лучше не придумаете!
На стороне сервера ставите демона, на стороне клиента запускаете с ключами докачки(на всякий случай) и сжатия передаваемой информации по сети.
Ответ написан
Комментировать
Rodionc
@Rodionc
IT security, SIEM, IDM...
Так же предложу UFTP - шлёт данные по UDP, соответственно, если канал с высоким ping-ом, то время передачи может ощутимо снизиться. В своё время использовал данную софтину для закачки 2 ТБ в Китай.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
Sanes
@Sanes
rsync попробуйте
Ответ написан
@Tabletko
никого не трогаю, починяю примус
Проверьте канал между вашим сервером и домашним компом при помощи iperf. Если покажет числа приблизительно похожие на заявленные провайдером, ищите узкое место дальше. Возможно диски не успевают быстрее читать или писать. Возможно на принимающей стороне есть какая-либо посторонняя нагрузка, которая не позволяет быстрее записывать. Так же убедитесь, что с обоих сторон гарантированная полоса, иначе все эти тесты можно будет поделить на 10, т.к. сейчас у прова нет нагрузки и скорость по тарифу, а через десять минут пров перегружен и вы делите внешний канал со всеми клиентами провайдера.
Ответ написан
Комментировать
@robin777
Ответ написан
Комментировать
@Drno
Fileszilla на домашнем компе и далее по sFTP...

Rsync

Ну и про канал верно написали. То что у Вас провайдер говорит про 500мб/с совсем не означает что эта скорость доступна до вашего сервака.... к примеру дом ру, Ростелеком и еще много кто зарезпют скорость в европу до 10-50мб/с ...
Ответ написан
Комментировать
gedev
@gedev
сисадмин-энтузиаст
Я как-то для себя сохранял информацию по вопросу передачи файлов большого размера. На практике пока не приходилось заниматься, но возможно тебе, автор, эти обрывки текста помогут. Все под катом. Взято из комментариев к этому ролику. Идея сжимать файлы налету выглядит крайне хорошо.

Паста
Если объем данных огромен и содержит огромное количество файлов, а также нет места (времени) для создания архива, но передать нужно сейчас и очень быстро (чтобы получить более высокую скорость передачи данных), рекомендую использовать следующие команды.
На стороне получателя данных переходим в каталог, в который необходимо разместить полученные данные, и выполняем такую команду:
nc -l 12345 | tar xvf -
На стороне источника данных так же переходим в каталог, в котором размещён передаваемый каталог, и выполняем такую команду:
tar -cf - ./our_directory/ | nc target_host 12345
вариант с выводом объема трафика
tar -cf - ./our_directory/ | pv | nc target_host 12345
Где:
12345 - номер порта, по которому будет производиться обмен данными;
target_host - ip-адрес или hostname компьютера, на который будут передаваться данные.

---

ещё какие-то доки
moo.nac.uci.edu/~hjm/HOWTO_move_data.html#tarnetcat

---

У nc есть один существенный минус. Порт на сервере для передачи данных надо открыть в файрволле, а после передачи не забыть закрыть. А для передачи данных с локального ПК на сервер, надо пробрасывать порт на локальный комп на маршрутизаторе (если конечно сквозная маршрутизация не настроена средствами ВПН или напрямую). Для ssh порт как правило открыт для подключений извне, так что дополнительных лействий совершать не придется.

Далее, хорошо сжимаемые данные (текстовики, образы виртуалок, дампы баз) принято гонять в сжатом виде. Жать можно на лету, либо встроенными в scp инструментами, либо жать сторонними утилитами вроде pigz и гонять данные через ssh и пайпы. Например так:
dd bs=4M if=template.img | pv | pigz -9c | ssh user@host "unpigz -c > /vm/template.img"
Подобным способом можно не только гонять файлы, но и переливать образ на удаленное устройство.
sudo dd bs=4M if=/dev/ssd1/vm | pv | pigz -9c | ssh user@host "unpigz -c | sudo dd bs=4M of=/dev/ssd2/vm"

---

https://www.stableit.ru/2012/03/gzip-vs-pigz.html
Ответ написан
Комментировать
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
В новом ssh
есть chacha20-poly1305 взамен RC4
Ответ написан
Комментировать
MaxLK
@MaxLK
сети, виртуализация, СХД...
флешка же!
Ответ написан
@zvl
http на одной стороне wget/curl на другой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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