Эффективное копирование больших файлов

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Одна страница
Распечатать
4X_Pro
Создатель сайта
Всего сообщений: 3526
Зарегистрирован: 9 дек. 2015 г., 19:20
Рейтинг пользователя: 1719

0
#1
Как наиболее эффективно передать файл достаточно большого объема (порядка 40 Гб) между двумя компьютерами с Linux в одной сети? Так, чтобы с одной стороны, он передавался быстро и без лишних затрат ресурсов (например, на шифрование, если использовать scp), с другой — потратить минимум времени на поднятие соответствующего сервера (из-за этого не хочу задействовать nfs или smb). Или это как раз случай, когда лучше всего временно поднять какой-нибудь старый добрый FTP? Заодно и с докачкой вопрос решится.

Ребята, давайте жить спокойно!

10geek
Единомышленник
Нет Всего сообщений: 333
Зарегистрирован: 29 июн. 2018 г., 09:36
Рейтинг пользователя: 40

0
. Редактировалось 1 раз, последний — #2
На стороне сервера:
nc -l ПОРТ < путь/к/файлу
На стороне клиента:
nc ХОСТ ПОРТ > путь/к/файлу
Либо выбрать какой-то из этих однострочников: https://gist.github.com/willurd/5720255. К примеру, busybox имеет свой веб-сервер, запускается так:
busybox httpd -f -p 8000
Лично я для этих целей использую servefile + wget.

4X_Pro
Создатель сайта
Всего сообщений: 3526
Зарегистрирован: 9 дек. 2015 г., 19:20
Рейтинг пользователя: 1719

0
#3
С nc — идея интересная! Правда, у меня файлов было несколько, да ещё с заковыристыми именами, которые желательно было сохранить. Поэтому пошёл другим путём — поставил pure-ftpd, чтобы на принимающем компьютере загрузить файлы с помощью Filezilla. Он работает сразу без дополнительных настроек, используя обычные системные логины. Но увы, работает медленно, 40 Гб перегонялись около 5 часов. (Возможно, из-за того, что оба компьютера подключены через WiFi, а не проводами.)

Ребята, давайте жить спокойно!

4X_Pro
Создатель сайта
Всего сообщений: 3526
Зарегистрирован: 9 дек. 2015 г., 19:20
Рейтинг пользователя: 1719

0
. Редактировалось 1 раз, последний — #4
Немного доработал идею с nc, если нужно скопировать большое количество файлов: упаковывать их в tar-архив на лету через использование конвейеров (pipelines), и так же распаковывать на приёмной стороне. Делается это так:
на стороне сервера:
nc -l порт | tar xvf - -C путь
на стороне клиента:
tar cvf - путь/ прочие_параметры|nc хост порт
В частности, так можно перенести вообще даже корневую файловую систему Linux (что я вчера и проделал при переходе с ноутбука на стационарный компьютер). Но чтобы сохранились права и владельцы файлов, нужно запускать tar с sudo:
nc -l порт | sudo tar xvf - -C путь sudo tar cvf - путь/ прочие_параметры | nc хост порт

Ребята, давайте жить спокойно!

Одна страница
Распечатать

У вас нет прав для отправки сообщений в эту тему.

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

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.