tar -C srcdir -c . | pigz | ssh host tar -C destdir -zx
Тут есть такой затык: создание файлов даже 0 размера требует относительно много времени из-за всяких сбросов буферов, журналирования и прочих предосторожностей авторов ФС. С другой стороны линейная запись файлов даже на шпинделе как правило быстрее сети. Из-за постоянных спотыканий на создание файлов и прочее обновление метаинформации полная скорость не достигается. С NFS/FTP/SMB этот эффект усиливается (по моему опыту).
FXP, но про эту FTP магию 80-го уровня знают немногие.
способ передачи файлов между двумя FTP-серверами напрямую, не закачивая их на свой компьютер. При FXP-сессии клиент открывает два FTP-соединения к двум разным серверам, запрашивая файл на первом сервере, указывая в команде PORT IP-адрес второго сервера.
Торрент - как протокол. Если запустишь свой трекер, автоматизируешь создание torrent файла и файлы не изменяются (так что нужен rsync).
Особенно если файлы большие и если надо копировать на много машин
Надо что ли написать такую копировалку, которая если есть доступ к удаленной машине по ssh, то она туда залогинится, запустит консольный rtorrent с magnet ссылкой на локально запущеный трекер, скачает все. И потом если копируешь на еще кучу машин, то оно реюзает трекер и уже существующие копии. Вот это было бы норм.
Если нужно больше технических решений на грани больной фантазии, обращайтесь
все это бесполезно, если скорость записи меньше скорости передачи по сети :(
Если «tar -C srcdir -c . |pv >/dev/zero» меньше скорости сети, то паковать бесполезно :)
конструкция «tar -C srcdir -c . | pigz | pv >/dev/zero»
должна показывать скорость близкую к скорости сети (1Gbit/s), иначе оно бесполезно.
Подбирая степень компрессии и число потоков можно подобрать скорость близкую к скорости сети.
Я бы еще перед pigz вставил что-то типа vbuf на 20-100Мб
если скорость чтения и компрессии сильно скачет.
Это что-же антиквариат такой должен быть вместо НЖМД, чтобы линейная запись была [заметно] медленнее гигабитной сети? Даже десктопные WD green уж 80мб/сек могут выдать. Ну может быть бюджетные SSD сейчас достаточно медленные, но они и маленькие вдобавок, так что некуда спешить.
Если «tar -C srcdir -c . |pv >/dev/zero» меньше скорости сети, то паковать бесполезно
Не бесполезно:
1) мы в сети иногда не одни
2) гзип считает контрольную сумму, а тар - нет.
vbuf
О, прикольная штука. Хотя можно и простой fifo подтюнить, на стековерфло был перловый скрипт.
Сильно относительно. На неустойчивых каналах, в целом да, nfs лагает. Но в каждом «но» есть свое «но», как пример, был поддиванный nas (WD) так на smb лагал по полной, а вот через nfs стало все зашибись.
ЛПИП, по определению быть такого не могет. Вы когда-нидь смотрели на внутренности smb? Там костыль над костылем и завернуто все в костыли и снизу все теже костыли, которые стоят на трех костылях, а те стоят на большом костыле. Оверхэда просто дофига. Это исторически так сложилось, мс при разработке думала что земля плоская.
tar -C srcdir -c . | pigz | ssh host tar -C destdir -zx
У ssh (включая scp) есть встроенный компрессор.
Там есть определенные тонкости, разрешена ли компрессия на ssh-сервере, но можно попробовать как-то так:
scp -C -r srcdir sshhost:/tmp
Вот только у меня это обычно замедляло скорость, но на хорошо сжимаемых данных может дать выигрыш.
На 10g сетке давал прикольный прирост костыль из связки netcat запущенных по количество ядер(12шт).
Но это крайне не удобно, и я даже не воспроизведу сейчас это наколенное творчество. Но, прирост по сравнению с scp/rsync был больше чем в 3 раза, что делало игру стоящей свеч.
Имеет смысл развелкаться только если надо реально дофига данных передать в общем.
Надо что ли написать такую копировалку, которая если есть доступ к удаленной машине по ssh, то она туда залогинится, запустит консольный rtorrent с magnet ссылкой на локально запущеный трекер, скачает все. И потом если копируешь на еще кучу машин, то оно реюзает трекер и уже существующие копии. Вот это было бы норм.