我有一个在供应商 *NIX 服务器上远程运行的应用程序。此应用程序将日志条目写入文件。此日志记录过程非常典型的仅附加方法,因此文件的大小只会增加,并且一旦写入内容 - 它就永远不会被修改。
我希望实时地将这些日志条目拉到我自己的网络内的本地 *NIX 服务器上,以便可以在我自己的本地服务器上跟踪日志文件。
考虑到日志文件的仅追加特性,人们会认为在添加新行(字节)时跟踪增量相当容易,并且仅在日志文件增长时提取更改。
我希望获得一些有关可用工具来执行此任务的启发......?
我很乐意通过 ssh 提取文件,据我所知这是先决条件。如果对应用程序有用,SFTP 是另一种可用的替代方案。
答案1
答案2
根据 Cristian 的建议,rsync 似乎是一个可行的选择......但它确实需要调度(通过 cron?)以根据需要不断评估和更新。
这个--apend
标志似乎是我们的朋友。这将假定先前复制但随后更新的文件的内容没有改变。
例如:
- Cron 调用,远程文件 10MB,本地文件不存在 a. 从远程服务器复制整个 10MB b. rsync 存在
- Cron 调用,远程文件 12MB,本地文件 10MB a. rsync 假设每个文件的前 10MB 相同 b. rsync 下载 2mb 增量 c. rsync 退出
不断调用 cron 有点麻烦。不过,将其添加到 inittab 以确保它在存在时重新生成可能是可行的。这意味着 rsync 进程始终在运行,在前一个下拉完成后立即启动下一个下拉。
还有其他建议吗?