centos

如何备份和恢复CentOS PHP数据

小樊
37
2025-09-30 21:15:30
栏目: 编程语言

CentOS环境下PHP数据备份与恢复指南

一、备份前的准备工作

  1. 确认数据位置
    • PHP文件通常存放在Web服务器的根目录(如Apache的/var/www/html、Nginx的/usr/share/nginx/html);
    • PHP配置文件位于/etc/php.ini(全局配置)或/etc/php.d/(扩展配置);
    • 若PHP应用使用数据库(如MySQL),需备份对应的数据库(如mydatabase)。
  2. 准备存储介质
    将备份文件存储在安全位置(如外部硬盘、网络存储/NAS或云存储),避免单点故障。
  3. 安装必要工具
    CentOS默认已安装tarrsync等基础工具;若未安装mysqldump(MySQL备份工具),可通过sudo yum install mysql-server mysql-devel安装。

二、PHP文件的备份方法

1. 使用tar命令打包备份(全量备份)

# 进入备份目录
cd /backup
# 打包PHP文件(排除临时文件,如.cache、.log)
sudo tar -czvf php_files_backup_$(date +%Y%m%d).tar.gz --exclude='*.log' --exclude='*.tmp' /var/www/html/

2. 使用rsync命令增量备份(仅备份变化部分)

# 创建备份目录(按日期分类)
mkdir -p /backup/php_$(date +%Y-%m-%d)
# 同步PHP文件(保留权限、时间戳,删除目标目录中多余的文件)
sudo rsync -avz --delete /var/www/html/ /backup/php_$(date +%Y-%m-%d)/

三、PHP配置文件的备份

# 备份php.ini(全局配置)
sudo cp /etc/php.ini /backup/php_ini_backup_$(date +%Y%m%d).ini
# 备份PHP扩展配置(若有)
sudo cp -r /etc/php.d/ /backup/php_d_backup_$(date +%Y%m%d)/

四、数据库的备份与恢复(若PHP应用使用数据库)

1. 使用mysqldump逻辑备份(推荐)

# 备份单个数据库(如mydatabase)
mysqldump -u root -p mydatabase > /backup/mydatabase_backup_$(date +%Y%m%d).sql
# 备份所有数据库
mysqldump -u root -p --all-databases > /backup/all_databases_backup_$(date +%Y%m%d).sql

2. 物理备份(大型数据库适用)

# 停止MySQL服务(确保数据一致性)
sudo systemctl stop mysqld
# 复制数据目录(默认/var/lib/mysql)
sudo cp -r /var/lib/mysql /backup/mysql_physical_backup_$(date +%Y%m%d)
# 启动MySQL服务
sudo systemctl start mysqld

五、恢复操作步骤

1. 恢复PHP文件

# 解压tar备份文件
sudo tar -xzvf /backup/php_files_backup_20250930.tar.gz -C /
# 或使用rsync同步增量备份
sudo rsync -avz /backup/php_2025-09-30/ /var/www/html/

2. 恢复PHP配置文件

# 覆盖php.ini
sudo cp /backup/php_ini_backup_20250930.ini /etc/php.ini
# 覆盖扩展配置
sudo cp -r /backup/php_d_backup_20250930/ /etc/php.d/
# 重启Web服务使配置生效
sudo systemctl restart apache2  # Apache
# 或
sudo systemctl restart nginx    # Nginx

3. 恢复数据库(逻辑备份)

# 登录MySQL(确认数据库是否存在,若不存在需先创建)
mysql -u root -p
# 创建数据库(若未存在)
CREATE DATABASE mydatabase;
# 退出MySQL
exit;
# 导入备份文件
mysql -u root -p mydatabase < /backup/mydatabase_backup_20250930.sql

4. 恢复数据库(物理备份)

# 停止MySQL服务
sudo systemctl stop mysqld
# 删除原数据目录(谨慎操作!)
sudo rm -rf /var/lib/mysql/*
# 复制备份的数据目录
sudo cp -r /backup/mysql_physical_backup_20250930/* /var/lib/mysql/
# 修改权限(确保MySQL用户拥有所有权)
sudo chown -R mysql:mysql /var/lib/mysql
# 启动MySQL服务
sudo systemctl start mysqld

六、自动化备份设置(可选)

  1. 编写备份脚本(如/usr/local/bin/php_backup.sh):
#!/bin/bash
# 定义变量
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
# 备份PHP文件
tar -czvf $BACKUP_DIR/php_files_$DATE.tar.gz /var/www/html/
# 备份数据库
mysqldump -u root -p mydatabase > $BACKUP_DIR/mydatabase_$DATE.sql
# 删除7天前的备份(保留最近7天)
find $BACKUP_DIR -name "php_files_*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "mydatabase_*.sql" -mtime +7 -delete
  1. 设置定时任务(每天凌晨2点执行):
# 编辑crontab
crontab -e
# 添加以下内容
0 2 * * * /usr/local/bin/php_backup.sh

注意事项

  1. 备份频率:根据数据重要性设置(如每日全量+每小时增量);
  2. 存储安全:备份文件需加密(如使用gpg)或存储在异地;
  3. 权限检查:确保备份/恢复操作的用户有足够权限(通常为root);
  4. 测试恢复:每月至少测试一次备份文件的恢复流程,确保有效性。

0
看了该问题的人还看了