Я пытаюсь передать около 100 тыс. Файлов общим объемом 90 Гб. Прямо сейчас я использую демон rsync, но он медленный 3.4mb / s, и мне нужно делать это несколько раз. Мне интересно, какие у меня есть варианты, которые позволили бы максимально использовать 100-битное соединение через Интернет и были бы очень надежными.
rsync
file-transfer
incognito2
источник
источник
Ответы:
Вы рассматривали Sneakernet ? При больших наборах данных доставка за ночь часто происходит быстрее и дешевле, чем через Интернет.
источник
Как? Или TL; DR
Самый быстрый метод , который я нашел это сочетание
tar
,mbuffer
иssh
.Например:
Благодаря этому я добился устойчивой передачи по локальной сети со скоростью более 950 Мбит / с по каналам 1 Гбит. Замените пути в каждой команде tar, чтобы они соответствовали тому, что вы переносите.
Почему? mbuffer!
Самым большим узким местом в передаче больших файлов по сети является, безусловно, дисковый ввод-вывод. Ответ на это
mbuffer
илиbuffer
. Они во многом похожи, ноmbuffer
имеют некоторые преимущества. Размер буфера по умолчанию составляет 2 МБ дляmbuffer
и 1 МБ дляbuffer
. Большие буферы, скорее всего, никогда не будут пустыми. Выбор размера блока, который является наименьшим общим кратным собственного размера блока как в целевой, так и в целевой файловой системе, даст наилучшую производительность.Буферизация это то , что делает все различия! Используйте это, если у вас есть это! Если у вас его нет, получите! Использование
(m}?buffer
плюс что-либо лучше, чем все само по себе. это почти буквально панацея для медленной передачи файлов по сети.Если вы передаете несколько файлов, используйте
tar
их для объединения их в один поток данных. Если это один файл, который вы можете использоватьcat
или перенаправление ввода / вывода. Накладные расходы поtar
сравнению соcat
статистически незначимы, поэтому я всегда используюtar
(илиzfs -send
там, где могу), если это не tarball . Ни один из них не гарантирует вам метаданные (и, в частностиcat
, не даст). Если вы хотите метаданные, я оставлю это в качестве упражнения для вас.Наконец, использование
ssh
для транспортного механизма является безопасным и несет очень мало накладных расходов. Опять же, накладные расходы поssh
сравнениюnc
статистически незначимы.источник
tar -cf - .|mbuffer -m128k -s 256M -I 9090 & mbuffer -m128k -s 256M -O host:9090 | tar -xf -
ssh
делает это простым. Использованиеstunnel
,socat
илиopenssl
тоже работает, но они более сложны , чтобы создать для простой передачи.Вы упоминаете «rsync», поэтому я предполагаю, что вы используете Linux:
Почему бы вам не создать файл tar или tar.gz? Сетевое время передачи одного большого файла быстрее, чем многих маленьких. Вы даже можете сжать его, если хотите ...
Тар без сжатия:
На исходном сервере:
Затем на приемном конце:
Гудрон со сжатием:
На исходном сервере:
Затем на приемном конце:
Вы бы просто использовали rsync для фактической передачи файлов (tar | tar.gz).
источник
Вы можете попробовать
tar
иssh
трюк описано здесь :это должно быть перезаписано следующим образом :
Вы потеряли бы
--partial
чертыrsync
в процессе, все же. Если файлы меняются не очень часто, жизнь с медленными начальными значениямиrsync
может оказаться весьма полезной, поскольку в будущем она будет развиваться гораздо быстрее.источник
Вы можете использовать различные параметры сжатия rsync.
Степень сжатия бинарных файлов очень низкая, поэтому вы можете пропустить эти файлы, используя --skip-compress, например iso, уже заархивированные и сжатые архивы и т. д.
источник
Я большой поклонник SFTP. Я использую SFTP для передачи медиа с моего основного компьютера на сервер. Я получаю хорошие скорости по локальной сети.
SFTP надежен, я бы дал этому шанс, так как его легко настроить, а в некоторых случаях он может быть быстрее.
источник