温馨提示×

如何备份和恢复CentOS PHP数据

小樊
39
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/ 
  • 参数说明-c创建归档,-z用gzip压缩,-v显示过程,-f指定文件名;--exclude排除不需要备份的文件类型。

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

# 创建备份目录(按日期分类) mkdir -p /backup/php_$(date +%Y-%m-%d) # 同步PHP文件(保留权限、时间戳,删除目标目录中多余的文件) sudo rsync -avz --delete /var/www/html/ /backup/php_$(date +%Y-%m-%d)/ 
  • 优势:相比tarrsync更适合频繁备份(如每日增量),节省存储空间和带宽。

三、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 
  • 说明-u指定用户名,-p提示输入密码;备份文件为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