在 *NIX 服务器之间复制日志文件

在 *NIX 服务器之间复制日志文件

我有一个在供应商 *NIX 服务器上远程运行的应用程序。此应用程序将日志条目写入文件。此日志记录过程非常典型的仅附加方法,因此文件的大小只会增加,并且一旦写入内容 - 它就永远不会被修改。

我希望实时地将这些日志条目拉到我自己的网络内的本地 *NIX 服务器上,以便可以在我自己的本地服务器上跟踪日志文件。

考虑到日志文件的仅追加特性,人们会认为在添加新行(字节)时跟踪增量相当容易,并且仅在日志文件增长时提取更改。

我希望获得一些有关可用工具来执行此任务的启发......?

我很乐意通过 ssh 提取文件,据我所知这是先决条件。如果对应用程序有用,SFTP 是另一种可用的替代方案。

答案1

除非我误解了这个问题,否则这就是它syslog的目的——一般的远程日志记录功能,而不仅仅是你想要复制一个日志文件的新部分的特定愿望。这里是一份白皮书帮助您入门。基本上,您需要配置远程设备以将日志发送到您的系统,并配置本地设备以收集日志。以下是更新文章

由于它是相当标准的,您可以有一个中央系统日志服务器来收集各种设备的日志(我的许多无线接入点都具有发送到系统日志的功能,这是查看这些设备以前的电源循环日志的唯一方法,因为本地日志是非持久性的。)

答案2

根据 Cristian 的建议,rsync 似乎是一个可行的选择......但它确实需要调度(通过 cron?)以根据需要不断评估和更新。

这个--apend标志似乎是我们的朋友。这将假定先前复制但随后更新的文件的内容没有改变。

例如:

  1. Cron 调用,远程文件 10MB,本地文件不存在 a. 从远程服务器复制整个 10MB b. rsync 存在
  2. Cron 调用,远程文件 12MB,本地文件 10MB a. rsync 假设每个文件的前 10MB 相同 b. rsync 下载 2mb 增量 c. rsync 退出

不断调用 cron 有点麻烦。不过,将其添加到 inittab 以确保它在存在时重新生成可能是可行的。这意味着 rsync 进程始终在运行,在前一个下拉完成后立即启动下一个下拉。

还有其他建议吗?

相关内容