Linux系统中编写bash脚本,定期备份应用系统的日志文件

目                   录

一、需求说明

(一)备份日志文件的作用

1、保护数据安全和完整性。

2、提高系统的可用性和稳定性。

3、提高系统的安全性和审计能力。

(二)备份日志文件的范围

二、设计说明

(一)设计思路

(二)设计

1、单次处理日志文件的脚本编写

2、定期执行的实现

三、脚本程序实现

(一)定期备份指定目录及其子目录下的日志文件

(二)删除原始日志文件

(三)使用 cron 定期备份日志文件

1、打开 crontab 编辑器

2、添加备份任务 

3、配置执行    

4、测试cron 任务

(四)使用systemd定时器定期备份日志文件

1、首先,定义定时器

2、然后,创建任务文件

3、启用定时器

四、注意事项


一、需求说明

       一个客户使用了几套视频监控平台软件,他们是体制内的单位,因此需要我们要定期备份一些日志文件。

(一)备份日志文件的作用

1、保护数据安全和完整性。

        在数据丢失或损坏的情况下,可以使用备份日志文件来恢复数据,确保数据的可靠性和准确性。这有助于减少因数据丢失或损坏导致的业务中断和损失。

2、提高系统的可用性和稳定性。

        通过定期备份日志文件,可以释放存储空间,避免日志文件过度占用存储资源,从而提高系统的性能和稳定性。此外,在系统出现故障或崩溃时,管理员可以使用备份日志文件进行故障恢复,快速恢复系统可用性。

3、提高系统的安全性和审计能力。

        日志文件包含了应用系统的操作记录和事件信息,可以用于审计和监控系统的使用情况。通过备份日志文件,管理员可以追踪系统的活动和行为,发现潜在的安全威胁和异常行为,提高系统的安全性。同时,备份日志文件也可以用于事后审计和调查,帮助管理员查明问题的原因和责任。

      

(二)备份日志文件的范围

        我们系统的备份文件包括:

  1. 服务器上的日志,包括web服务器的日志、各种服务器模块的日志
  2. 客户端上的日志文件
  3. 管理端的日志文件

        服务器上的日志文件最多,包括中心管理服务器、信令服务器、流媒体服务器、录像服务器、点播服务器、告警服务器、视频接入服务器、SIP代理服务器等等。每个服务器模块都有对应的日志信息,并且每天都会产生一个或者多个日志文件。

        Web服务器采用的有tomcat和nginx,都有对应的日志文件。

        客户要求是所有的日志文件都要备份,但是经过反复沟通,他们自己可以看客户端的日志,因此,客户端日志他们自己定期备份;而服务器端和web服务器的日志,由于有一定的专业性,并且都在centos系统中,因此,需要我们来帮他们想办法。

二、设计说明

(一)设计思路

        客户的需求是定期备份每个服务器器模块的日志文件,同时要减少空间的占有率。因此,我们设计的时候要考虑如下因素:

  1. 所有服务器的日志文件都要能够备份下来,最好是备份到一起进行压缩打包;
  2. 日志文件备份号以后,这些文件可以删除,以便节省服务器的磁盘空间;
  3. 需要定期执行备份任务,要么人工定期操作、或者程序自动操作。

(二)设计

1、单次处理日志文件的脚本编写

(1)服务器日志文件的备份,

        由于7个服务器模块的日志文件都在同一个目录下,叫serverlog目录,然后再分多个子目录,存放各个服务模块的日志文件,因此,可以编制脚本,把serverlog及其子目录下的所有日志文件都打包备份;

(2)tomcat和nginx的目录也相对固定,可以直接找到对应的日志目录

(3)备份好文件以后,需要把目录里面的这些文件删除掉,以便释放磁盘空间;

2、定期执行的实现

        使用cron定时任务和 systemd定时器来实现脚本的定期执行

三、脚本程序实现

由于涉及到保密的要求,我这里把通用的脚本写出来,分享给大家。

(一)定期备份指定目录及其子目录下的日志文件

直接上脚本代码

	#!/bin/bash 
	
	# 定义源目录和目标备份目录 
	SOURCE_DIR="源日志文件的绝对路径" 
	BACKUP_DIR="备份后文件存放的绝对路径" 
	
	# 获取当前日期作为备份文件的日期标记 
	BACKUP_FILE="${BACKUP_DIR}/bak_$(date +%Y%m%d_%H%M%S).tar.gz" 
	
	# 创建目标备份目录(如果不存在) 
	mkdir -p $BACKUP_DIR 
	
	# 备份指定目录及其子目录下的日志文件 
	tar -czvf $BACKUP_FILE -C $SOURCE_DIR --include='*.log' --exclude='*/node_modules/*' . 
	
	# 检查备份是否成功 
	if [ $? -eq 0 ]; then 
	echo "Backup completed: $BACKUP_FILE" 
	else 
	echo "Backup failed!" 
	fi

        实际中,将 SOURCE_DIR 替换为您要备份的目录的路径,将 BACKUP_DIR 替换为您希望存储备份文件的目录的路径。脚本将使用当前日期作为备份文件的名称标记。

        此脚本使用 tar 命令来创建压缩的备份文件,并使用 --include  --exclude 选项来指定要备份的文件类型和排除某些不需要的文件或目录。

        最后,脚本检查备份是否成功,并输出相应的消息。

(二)删除原始日志文件

        在备份完成后删除原始日志文件,在脚本中添加以下语句:
 

    # 删除备份之前  原始的日志文件 
    find $SOURCE_DIR -type f -name "*.log" -exec rm {} \;

         其中,使用 find 命令来查找指定目录下所有以 .log 结尾的文件,并使用 rm 命令删除它们。将该语句添加到备份完成后的适当位置,确保在删除文件之前已经创建了备份。

        注意,删除原始日志文件是一个危险的操作,请确保您已经做好了备份,并有对应的备份和恢复机制,以防意外删除重要文件。

(三)使用 cron 定期备份日志文件

        要实现定期备份,您可以使用 cron 工具来设置定时任务。cron 允许您在指定的时间间隔内运行脚本或命令。

        以下是如何使用 cron 定期备份日志文件的步骤:

1、打开 crontab 编辑器

     crontab -e        

2、添加备份任务 

        如果您希望每个月的某一天(例如第4天)自动运行备份脚本,您可以添加以下行:

    0 5 4 * * /home/qu/backup_script.sh


        其中,0 5 4 * * 的格式代表:分钟 小时 日 月 周。所以上面的设置意味着每个月的第4天凌晨5点执行脚本。/home/qu/是脚本文件所在的目录。


3、配置执行    

        请确保您的脚本文件具有可执行权限:

    chmod +x /home/qu/backup_script.sh


4、测试cron 任务

        为了确保您的任务设置正确,您可以运行以下命令来查看您的 crontab 内容,并确保您的备份任务已正确设置:

    crontab -l


(四)使用systemd定时器定期备份日志文件

        systemd是CentOS中用于初始化系统和管理系统进程的工具。你可以使用systemd定时器来定期执行脚本文件。

1、首先,定义定时器

        创建一个以.timer为扩展名的文件,用于定义定时器的规则。例如,创建一个名为myscript.timer的文件,内容如下: 

[Unit]  
Description=My Script Timer  
  
[Timer]  
OnBootSec=30min  
OnBootSec=10min  
Unit=myscript.service

        上例中的定时器将在系统启动后30分钟和10分钟时触发,并执行myscript.service中的命令或脚本。

2、然后,创建任务文件

        创建一个以.service为扩展名的文件,用于定义要执行的任务。例如,创建一个名为myscript.service的文件,内容如下: 
 

[Unit]  
Description=myScript Service  
After=network.target  
  
[Service]  
Type=simple  
ExecStart=/home/qu/backup_script.sh

3、启用定时器

保存并退出编辑器后,使用以下命令启用和启动定时器:

 sudo systemctl enable myscript.timer  
sudo systemctl start myscript.timer

这将使定时器生效,并在指定的时间触发执行脚本文件。

四、注意事项


        1、确保您的备份脚本不会覆盖先前的备份文件。例如,如果您设置为每天备份,那么最好在脚本中添加逻辑来检查备份文件是否已经存在,并决定是否要覆盖它。
        2、 如果您的脚本需要大量的计算或资源,考虑在低负载时段执行它,以避免对系统性能产生负面影响。
        3、 为了安全起见,考虑不在脚本中硬编码密码或敏感信息。如果您需要从备份中删除原始日志文件,可以配置 find 命令或类似功能以避免硬编码文件名。
        4、定期检查备份文件和目录,以确保它们保持完整并可用。如果发现任何问题,及时采取措施进行修复或重新创建备份。

你可能感兴趣的:(linux,运维,服务器,centos,ubuntu,视频)