商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何备份和恢复CentOS PHP数据

如何备份和恢复CentOS PHP数据

  发布于2026-07-20 阅读(0)

扫一扫,手机访问

先说一个普遍现象:很多PHP开发者习惯在本地愉快地写代码,却很少认真考虑数据备份的事——直到服务器宕机、硬盘损坏或者手误删了某个关键文件,才追悔莫及。在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没装,跑一句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 -a vz --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.ini被误改或丢失,恢复起来比想象中麻烦得多。

四、数据库的备份与恢复(若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 -a vz /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

物理恢复时,rm -rf那一步一定要再三确认,搞错了可就真没了。

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

  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. 测试恢复:每月至少抽时间做一次恢复演练,确认备份文件真的能用——这才是最关键的。

如何备份和恢复CentOS PHP数据

本文转载于:https://www.yisu.com/ask/59989232.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注