温馨提示×

CentOS上ThinkPHP项目备份策略

小樊
58
2025-08-02 10:26:36
栏目: 编程语言

在CentOS上为ThinkPHP项目制定备份策略是确保数据安全的重要步骤。以下是一个详细的备份策略,涵盖了备份策略概述、备份方法、关键数据备份、自动化备份脚本、恢复策略、备份验证与测试以及最佳实践建议。

备份策略概述

  • 全量备份:定期完整备份系统。
  • 增量备份:基于全量备份的差异备份。
  • 关键数据备份:对重要配置文件和数据库单独备份。
  • 异地备份:将备份文件存储在不同物理位置。

备份方法

  • 使用tar命令备份

    • 全系统备份(排除特殊目录):

      tar -cvpzf /backup/centos_full_(date %Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/lostfound --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /
      
    • 增量备份(每日执行):

      rsync -aAXv --delete --exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lostfound,/backup} / /backup/incremental_backup_(date %Y%m%d)
      
    • 使用dd命令备份磁盘:

      dd if=/dev/sda of=/backup/centos_disk.img bs4M statusprogress
      
  • 使用Bacula企业级备份方案

    • 安装Bacula相关组件:
      install bacula-director bacula-storage bacula-client bacula-console
      

关键数据备份

  • 配置文件备份

    • 备份/etc目录:

      tar -czvf /backup/etc_backup_(date %Y%m%d).tar.gz /etc
      
    • 备份重要服务配置:

      cp /etc/ssh/sshd_config /backup/sshd_config_(date %Y%m%d)
      cp /etc/my.cnf /backup/my.cnf_(date %Y%m%d)
      
  • 数据库备份

    • MySQL/MariaDB备份:

      mysqldump -u root -p --all-databases > /backup/mysql_all_(date %Y%m%d).sql
      mysqldump -u root -p database_name > /backup/database_name_(date %Y%m%d).sql
      
    • PostgreSQL备份:

      pg_dumpall -U postgres > /backup/postgres_all_(date %Y%m%d).sql
      

自动化备份脚本

创建 /usr/local/bin/backup_centos.sh 脚本:

#!/bin/bash

BACKUP_DIR=/backup

# 获取当前日期
DATE=$(date %Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR/full $BACKUP_DIR/incremental $BACKUP_DIR/db

# 全量备份(每周日执行)
if [ $(date %u) -eq 7 ]; then
    tar -cvpzf $BACKUP_DIR/full/centos_full_$DATE.tar.gz \
        --exclude=/backup \
        --exclude=/proc \
        --exclude=/lostfound \
        --exclude=/sys \
        --exclude=/mnt \
        --exclude=/media \
        --exclude=/dev /
fi

# 增量备份(每日执行)
rsync -aAXv --delete \
    --exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lostfound,/backup} \
    / $BACKUP_DIR/incremental/$DATE

# 数据库备份
mysqldump -u root -pYOURPASSWORD --all-databases > $BACKUP_DIR/db/mysql_all_$DATE.sql
pg_dumpall -U postgres > $BACKUP_DIR/db/postgres_all_$DATE.sql

# 保留30天备份
find $BACKUP_DIR/full -mtime 30 -delete
find $BACKUP_DIR/incremental -mtime 30 -delete
find $BACKUP_DIR/db -mtime 30 -delete

添加到crontab自动执行:

0 2 * * * /usr/local/bin/backup_centos.sh

恢复策略

  • 从备份文件恢复:将备份文件复制到系统根目录,使用相应的解压和恢复命令进行恢复。例如,使用tar命令恢复完整备份:
tar xvpfz backup.tar.gz -C /

备份验证与测试

  • 定期测试备份文件的完整性和可恢复性,确保备份数据可以正常恢复。

以上就是CentOS上ThinkPHP项目备份策略的详细介绍,希望对您有所帮助。

0