云服务器自动备份Linux宝塔部署的网站文件、mysql数据库和相关配置文件的脚本配置

编写了一个完整的备份shell脚本,包含数据库和网站文件的备份:

一、脚本功能说明

  1. 数据库备份:备份wordpress数据库为SQL文件并压缩
  2. 网站文件备份:备份网站目录为tar.gz压缩包
  3. 配置文件备份:备份相关服务配置文件
  4. 自动清理:保留最近60天的备份,自动清理旧文件
  5. 日志报告:生成详细的备份报告和日志
  6. 错误处理:完善的错误检测和处理机制

二、使用前请修改

  1. 修改DB_NAME为您的实际数据库名称,DB_USER为您的实际数据库用户名,WEB_DIR 为您的实际网站目录,WEB_IP为您的实际服务器IP ,MYSQL_CONFIG_EDITOR_PATH为您的实际MySQL中的mysql_config_editor全路径,MYSQLDUMP_PATH为您的实际MySQL中的mysqldump全路径。
  2. 根据您的MySQL密码配置方式选择合适的方法
  3. 确认备份目录有足够的磁盘空间

这个脚本提供了完整的备份解决方案,并考虑了安全性和易用性。

三、备份脚本:backup.sh

四、设置密码文件(强烈推荐)

首先切换到root账户,创建安全的密码文件(请根据实际修改相关user值和your_mysql_password参数):

如果使用mysql_config_editor(更安全),出现 mysql_config_editor: command not found 的原因通常是系统中 没有安装包含该工具的 MySQL 客户端包,或 安装路径不在 PATH 环境变量中。mysql_config_editor 从 MySQL 5.7 开始才随 mysql-community-client(或对应发行版的 mysql-client)一起发布,5.6 及更早版本默认不带此命令。

首先确认已经安装MySQL>=5.7版本,使用命令查询:

如果没有出现mysql_config_editor路径,是因为mysql_config_editor不在 /usr/bin 或 /usr/local/bin,首先切换到root账户,运行下面命令查询Linux宝塔安装MySQL后mysql_config_editor位置,把其所在目录加入 PATH:

再次使用命令查询:

出现mysql_config_editor路径:

验证版本:

能输出版本信息即表示问题已解决。

再次使用下面命令,创建安全的密码文件(请根据实际修改相关user用户值和your_mysql_password密码参数):

五、设置系统级定时任务

解决方法:

在普通账户下,把脚本扔进系统级目录(/etc/cron.d/),由 root 的 cron 直接调度,脚本里所有命令天然就是 root 权限,也不用写 sudo


  1. 将已经写好的backup.sh脚本(不要 sudo),放入下面路径:

    /opt/admin/backup.sh

  2. 给脚本加可执行、仅 root 可改

  3. 放进 /etc/cron.d(推荐,时间可自定义)
    新建文件 /etc/cron.d/mybackup

    写入下面内容:

保存后立即生效,无需重启 cron

六、查看日志及备份文件

  1. 使用命令cat /var/log/backup.log查看日志

  1. 使用命令ls -lh /home/backups查看备份文件

也可以登陆Linux宝塔面板,查看备份文件。


一句话总结 :

把脚本交给 root 的 cron,脚本里所有命令就当 root 用,sudo 字样全部删掉,省心又安全。