/var/www/html
、Nginx的/usr/share/nginx/html
);/etc/php.ini
(全局配置)或/etc/php.d/
(扩展配置);mydatabase
)。tar
、rsync
等基础工具;若未安装mysqldump
(MySQL备份工具),可通过sudo yum install mysql-server mysql-devel
安装。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
排除不需要备份的文件类型。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.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)/
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格式,可直接导入。# 停止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
# 解压tar备份文件
sudo tar -xzvf /backup/php_files_backup_20250930.tar.gz -C /
# 或使用rsync同步增量备份
sudo rsync -avz /backup/php_2025-09-30/ /var/www/html/
# 覆盖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
# 登录MySQL(确认数据库是否存在,若不存在需先创建)
mysql -u root -p
# 创建数据库(若未存在)
CREATE DATABASE mydatabase;
# 退出MySQL
exit;
# 导入备份文件
mysql -u root -p mydatabase < /backup/mydatabase_backup_20250930.sql
# 停止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
# 编辑crontab
crontab -e
# 添加以下内容
0 2 * * * /usr/local/bin/php_backup.sh
gpg
)或存储在异地;root
);