将日志备份到新目录

将日志备份到新目录

我需要编写一个脚本来复制日志文件。

日志有两种格式:

  • System_<date_timestamp>.log
  • trace_<date_timestamp>.log

当跟踪日志达到 20 MB 且系统日志达到 10 MB 时,将生成新文件。

这些日志只允许保存5个(每种5个),一旦超过5个,旧文件将被删除并被新文件替换。

因此,在删除它们之前,我需要将它们复制到不同的位置,以便稍后需要调试时可以查看它们。

基本上,它将如下所示(仅显示跟踪日志格式,与系统日志类似):

trace_12.03.05_17.11.20.log
trace_12.03.05_17.12.30.log
trace_12.03.05_17.13.45.log
trace_12.03.05_17.13.23.log
trace_12.03.05_17.14.40.log

答案1

您也可以使用 log-rotate 进行相同的操作,请参阅以下示例

# Logrotate file for trace

/source/path/trace_*.log {
    missingok
    create
    compress
    rotate 1
    lastaction
        # After compressing logs, move to other location 
        Log_dir="/target/dir/old_log_$(date +%F)/$(date +%H_%S)/"
        [[ ! -d "${Log_dir}" ]] && /bin/mkdir -p "${Log_dir}"
        /bin/mv /source/path/*.gz "${Log_dir}"
    endscript
}

保存上面的文件,然后/etc/logrotate_trace.conf 简单地设置每小时的 cron 作业

00 * * * * /usr/sbin/logrotate  -f /etc/logrotate_trace.conf

为了进行测试,您可以从命令行运行它

/usr/sbin/logrotate  -f /etc/logrotate_trace.conf

答案2

使用 GNU cp(大多数非嵌入式 Linux 发行版和其他一些 Unices 上都有):

cp -p --update /source/path/trace_*.log /target/dir

答案3

最直接的工具是同步,它复制新文件、更新更改的文件并保留现有的未更改文件。

rsync -a /path/to/source/*.log /path/to/backup/directory/

相关内容