Linux系统日志每日备份脚本

1、脚本功能

日常开发中会有很多场景需要我们去备份系统的配置文件、日志数据等等,本脚本可以定时备份linux的某个文件夹。自动删除X天前的备份数据,灰常的好用。

[root@backup syslog]# more syslog.sh

#!/bin/bash

#bakup system logs

yesterday=`date -d -1day +%Y-%m-%d`

cat /backup/syslos/ip.txt|grep -v ^#|while read ip;

do

   log_dir=`echo $ip|awk '{print $1}'`

   if [ ! -d "/backup/syslog/$log_dir/$yesterday" ];then

        mkdir -p /backup/syslog/$log_dir/$yesterday

   fi

   rsync -avz -e ssh root@$ip:/var/log/messages  /backup/syslog/$log_dir/$yesterday

   rsync -avz -e ssh root@$ip:/var/log/secure  /backup/syslog/$log_dir/$yesterday

   rsync -avz -e ssh root@$ip:/var/log/boot.log  /backup/syslog/$log_dir/$yesterday

   rsync -avz -e ssh root@$ip:/var/log/cron  /backup/syslog/$log_dir/$yesterday

   rsync -avz -e ssh root@$ip:/var/log/lastlog  /backup/syslog/$log_dir/$yesterday

   rsync -avz -e ssh root@$ip:/var/log/audit/audit.log  /backup/syslog/$log_dir/$yesterday

 

    cd /backup/syslogs/$log_dir/$yesterday && tar -zcvf syslog.tar.gz  .

       find . -type f -not -name '*.tar.gz' -exec rm -f {} +

done

find /backup/syslogs/  -type f  -name  "*.tar.gz"  -mtime +90 -exec rm -f {} \;

2、定时执行

通过linux自带的corntab来实现脚本的定时备份,这里我们定义每天0点备份一次日志

0 0 * * * cd /backup/syslog && bash syslog.sh

3、MySql数据库备份脚本

#数据库备份脚本
#!/bin/bash
#备份目录
backup_dir="/data/mysqlbackup"
#目录不在则创建
[ ! -d /mysqlbackup ] && mkdir /data/mysqlbackup
# MySQL 用户名和密码
mysql_username="your_username"         #用户名
mysql_password="your_password"         #密码
# 备份名称前缀
backup_prefix="nlpt"
# 当前日期
current_date=$(date +%Y-%m-%d)
# 备份文件名
backup_file="${backup_prefix}-${current_date}.sql"
# 压缩文件名
compressed_file="${backup_prefix}-${current_date}.tar.gz"
# 备份数据库
mysqldump -u $mysql_username -p${mysql_password} --all-databases > "${backup_dir}/${backup_file}"
# 压缩备份文件
tar -czvf "${backup_dir}/${compressed_file}" "${backup_dir}/${backup_file}"
# 删除原始备份文件
rm "${backup_dir}/${backup_file}"
# 删除30天前的备份文件
find $backup_dir -name $backup_file -type f -mtime +30 -exec rm {} \;

这个脚本可以在 Linux 上运行。它从 MySQL 中备份所有数据库,并将备份命名为以“backup-YYYY-MM-DD”格式命名的文件。备份文件将被压缩为以“backup-YYYY-MM-DD.tar.gz”命名的文件。备份文件和压缩文件将保存在指定的备份目录中。脚本将删除 30 天前的备份文件,以保持备份目录的清洁和整洁。在使用此脚本前,请将“your_username”和“your_password”替换为实际的 MySQL 用户名和密码。

以上基于业务停止运行,数据库在没有数据写入的情况下进行备份,但在我们日常工作中不能停掉业务后进行数据库备份,因此需要添加参数:

--single-transaction

即使数据库受到恶意攻击或不可预见的技术故障,也可以通过备份迅速恢复数据。在发生硬件故障、软件错误或人为错误导致数据损坏时,可以使用备份来恢复到故障前的状态,确保业务流程不受影响。

相关推荐

  1. Linux系统日志每日备份脚本

    2024-05-14 04:00:04       10 阅读
  2. windows系统Mysql备份脚本

    2024-05-14 04:00:04       40 阅读
  3. Linux系统定时备份mysql数据库

    2024-05-14 04:00:04       18 阅读
  4. k8s及etcd的每日自动备份及故障时的还原脚本

    2024-05-14 04:00:04       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 04:00:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 04:00:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 04:00:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 04:00:04       18 阅读

热门阅读

  1. getter和setter方法的优缺点

    2024-05-14 04:00:04       12 阅读
  2. leetcode 918.环形子数组的最大和

    2024-05-14 04:00:04       10 阅读
  3. JanusGraph Tinkerpop

    2024-05-14 04:00:04       9 阅读
  4. 船舶检测数据集VOC+YOLO格式7000张6类别

    2024-05-14 04:00:04       11 阅读
  5. 【GoLang基础】panic和recover有什么作用?

    2024-05-14 04:00:04       11 阅读
  6. c++ string容器

    2024-05-14 04:00:04       10 阅读
  7. pat乙1033-旧键盘打字

    2024-05-14 04:00:04       13 阅读
  8. K折交叉验证

    2024-05-14 04:00:04       11 阅读
  9. C++Primer Plus第五章结构编程练习8

    2024-05-14 04:00:04       10 阅读