Чтобы сохранить файл по ssh, я могу использовать
ssh -t remotebox "tail -f /var/log/remote.log"
Однако можно ли синхронизировать хвост с локальным файлом? Значит, файл автоматически отражает обновление хвостовой команды?
Да, для этого можно использовать тройник:
ssh -t remotebox "tail -f /var/log/remote.log" | tee -a /var/log/local.log
Таким образом, вывод будет напечатан как на стандартный вывод, так и скопирован в /var/log/local.log в системе, из которой вы запускаете команду ssh.
Просто перенаправьте stdout.
ssh -t remotebox tail -f /var/log/remote.log > local.log
Чтобы добавить в local.log:
ssh -t remotebox tail -f /var/log/remote.log >> local.log
Это запишет на локальный сервер.
Удаленный сервер будет записан только в том случае, если вы включите перенаправление в кавычки:
ssh -t removebox "tail -f /var/log/remote.log >> remote.log"
Просто предложите еще один полезный способ - использовать логтейл. Установить logtail
пакет на удаленный хост, затем запустите это, чтобы получить только новые строки, которые не были прочитаны в прошлый раз:
ssh remotebox logtail -f /var/log/remote.log >> local.log
Вы можете запускать указанную выше команду всякий раз, когда хотите «синхронизировать» журнал, или можете добавить ее в crontab, чтобы она могла запускаться автоматически. Этот способ особенно полезен, когда у вас нет стабильного соединения, поэтому вы не можете поддерживать соединение ssh изо дня в день.
Надеюсь на эту помощь.