使用 Rsync 获取最新文件。还有 cron 作业?

使用 Rsync 获取最新文件。还有 cron 作业?

我在两台不同的服务器上有一个日志文件。这些服务器位于负载平衡器下,因此一半的流量流向一台服务器,另一半的流量流向另一台服务器。

我需要从一台机器上获取最新的日志文件,并将该日志文件传输到另一台机器。因此,如果一台服务器上的日志文件发生更改,则另一台服务器上的日志文件也会更新。

我认为我需要使用 rsync。我是否还需要将其放入 cron 作业中?

答案1

rsync 无法将两个日志文件的内容合并为一个。

只要您将远程日志 rsync 到与包含本地日志的目录不同的目录,您将能够创建同步副本,以便一台计算机保存所有日志数据(尽管分为两个文件)。

正如评论中所建议的,为了持续合并日志文件,请配置服务器软件以通过该syslog设施记录到中央系统日志服务器。

答案2

您可以使用-uaka--update选项来 rsync 并自动启动它crontab。从rsync 手册页

-u, --update                skip files that are newer on the receiver

还请注意可能满足其他需求的其他选项:

 --inplace               update destination files in-place
 --append                append data onto shorter files
 --append-verify         --append w/old data in file checksum

至于使用 cron 作业,请查看crontab。您为 crontab 提供一个文件,它会读取该文件以了解何时启动任务。该文件的格式为:

minute hour day_of_month month day_of_week COMMAND

您可以使用如下文件每 7 分钟执行一次作业:

#  .---------------- minute (0 - 59) 
#  |   .------------- hour (0 - 23)
#  |   |   .---------- day of month (1 - 31)
#  |   |   |   .------- month (1 - 12) OR jan,feb,mar,apr ... 
#  |   |   |   |  .----- day of week (0 - 7) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat 
#  |   |   |   |  |
#  *   *   *   *  *  command
   */7 *   *   *  *  mail -s 'cron working' [email protected]

假设您将 crontab 文件命名为~/crontab.bash,则可以在特定机器上安装 crontab 作业,例如:

crontab ~/crontab.bash

请参阅 wiki 页面以了解更多信息。

相关内容