Мне пришлось переместить несколько терабайт данных по стране ровно один раз. В качестве эксперимента я запустил две передачи, используя rsync
и ssh/tar
, чтобы посмотреть, как они сравниваются.
Результаты:
rsync
передавали файлы со средней скоростью 2,76 мегабайта в секунду. второй. ssh/tar
передал файлы со средней скоростью 4,18 мегабайт в секунду. Детали:Мои данные состоят из миллионов сжатых файлов.gz, средний размер которых составляет 10 мегабайт, но некоторые из них имеют размер более гигабайта. Структура каталогов существует, но она кажется ничтожной по сравнению с размером данных внутри файлов. Если бы у меня было почти что-то еще, я бы использовал только rsync
, но в данном случае ssh/tar
является функциональным решением.
Моя работа с rsync
состоит из:
rsync --compress --stats --no-blocking-io --files-from=fileList.txt -av otherSystem:/the/other/dir/ dest/
где fileList.txt — это длинный список относительных путей к файлам на другой стороне. (Я заметил, что --compress
не работает для сжатых файлов после того, как я начал, но я не собирался возвращаться к перезагрузке.)
Я запустил еще один с помощью ssh и tar,:
ssh otherSystem "cd /the/other/dir/; tar cf -." | tar xvf -
Вы заметите, что это копирует все, извините, это не 100% сравнение яблок с яблоками.
Должен добавить, что пока я использую внутреннюю сеть компании, мне нужно пройти через посредника, чтобы добраться до компьютера-источника данных. Время проверки связи от моего целевого компьютера до посредника составляет 21 мс, а от посредника до источника данных — 26 мс. Это было одинаково для обоих переводов.
SSL-соединение через посредника осуществляется через запись ~/.ssh/config
:
Host otherSystem
Hostname dataSource.otherSide.com
User myUser
Port 22
ProxyCommand ssh -q -W %h:%p intermediary.otherSide.com
IdentityFile id_rsa.priv