У меня есть ситуация, которая требует решения, как в оригинальном плакате. Я записываю хоккейную игру на своем компьютере в одном месте, и я хотел бы посмотреть ее по телевизору в другом месте. Связь между этими двумя местоположениями позволяет копировать со скоростью около 1,3 Мбит / с, а запись видео - около 1,5 Мбит / с. Итак, я хочу скопировать файл, когда он начинает запись. Таким образом, моя 3-часовая игра будет скопирована примерно за 3,5 часа. Итак, я копирую его, когда он начинает запись, и я могу начать смотреть его через 30 минут после его начала. Тогда я могу смотреть это без перерывов, почти в режиме реального времени. То есть до тех пор, пока я могу получить его для копирования, как при записи нового файла. Проблема с такими инструментами, как rsync и scp, заключается в том, что они смотрят на размер файла, когда вы инициируете копирование, и как только он копирует этот объем данных, он закрывается; даже если файл увеличился более чем вдвое за эту копию. И, если я просто использую rsync в цикле, чтобы скопировать его после его остановки, когда следующий rsync заканчивает, он восстанавливает целевой файл, и это убивает мой видеопроигрыватель, и я должен возобновить просмотр и перемотать туда, где я был в программе, когда он внезапно убил его. Я хотел лучшее решение, и я не смог найти его, поэтому я собрал это:
dd if=2031_20160514030000.mpg |
pv --size 4653819304 |
ssh -C -c arcfour,blowfish-cbc -p 5555 myserver.com 'dd of=/media/TV/2031_20160514030000.mpg'
Так, что это делает?
Во-первых, я использую dd для копирования файла по мере его роста. Поскольку файл растет быстрее, чем dd может отправить его по сети, dd никогда не доходит до конца файла. Затем я передаю его «pipe viewer (pv)» и оцениваю, насколько большим будет файл, исходя из размера этих файлов. Это не обязательно, но мне нравится видеть индикатор прогресса. Затем я передаю поток в мое соединение ssh. Соединение ssh использует -C
для сжатия (чтобы уменьшить пропускную способность сети и попытаться ускорить его), -c arcfour,blowfish-cbc
для наименее дорогого шифрования (опять же, чтобы немного ускорить процесс),-p
для моего порта брандмауэра, который я использую в месте назначения, и ssh наконец запускает команду dd на цели, чтобы воссоздать файл, когда он его получает. Я рад сказать, что это решение прекрасно работает. Я могу наблюдать за игрой в хоккей, пока файл создается и копируется с небольшой задержкой.