阅读量:2
CentOS环境下PHP数据备份与恢复指南
一、备份前的准备工作
- 确认数据位置:
- PHP文件通常存放在Web服务器的根目录(如Apache的
/var/www/html、Nginx的/usr/share/nginx/html); - PHP配置文件位于
/etc/php.ini(全局配置)或/etc/php.d/(扩展配置); - 若PHP应用使用数据库(如MySQL),需备份对应的数据库(如
mydatabase)。
- PHP文件通常存放在Web服务器的根目录(如Apache的
- 准备存储介质:
将备份文件存储在安全位置(如外部硬盘、网络存储/NAS或云存储),避免单点故障。 - 安装必要工具:
CentOS默认已安装tar、rsync等基础工具;若未安装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)/
- 优势:相比
tar,rsync更适合频繁备份(如每日增量),节省存储空间和带宽。
三、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
六、自动化备份设置(可选)
- 编写备份脚本(如
/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
- 设置定时任务(每天凌晨2点执行):
# 编辑crontab
crontab -e
# 添加以下内容
0 2 * * * /usr/local/bin/php_backup.sh
注意事项
- 备份频率:根据数据重要性设置(如每日全量+每小时增量);
- 存储安全:备份文件需加密(如使用
gpg)或存储在异地; - 权限检查:确保备份/恢复操作的用户有足够权限(通常为
root); - 测试恢复:每月至少测试一次备份文件的恢复流程,确保有效性。
以上就是关于“如何备份和恢复CentOS PHP数据”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm