如何通过cPanel cron job备份public_html下指定WordPress目录及恢复方法
一、cron job自动备份配置步骤
提前从my_wp目录下的wp-config.php文件中获取对应数据库的名称、用户名、密码,对应字段为DB_NAME、DB_USER、DB_PASSWORD。
创建备份存储目录
在cPanel文件管理器的根目录(和public_html同级的目录)创建名为wp_backups的文件夹,请勿将该目录放在public_html下,避免备份文件被公开访问泄露数据。编写备份脚本
在wp_backups目录下新建文件wp_backup.sh,写入以下内容,注意替换脚本中所有占位的cPanel用户名、数据库信息:
# 定义基础变量 WP_DIR="/home/你的cPanel用户名/public_html/my_wp" BACKUP_DIR="/home/你的cPanel用户名/wp_backups" DB_NAME="你的WordPress数据库名" DB_USER="你的数据库用户名" DB_PASS="你的数据库密码" DATE=$(date +%Y%m%d_%H%M%S) # 备份WordPress文件 tar -zcf $BACKUP_DIR/wp_files_$DATE.tar.gz -C $WP_DIR . # 备份并压缩数据库 mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/wp_db_$DATE.sql.gz # 自动删除7天前的旧备份,可按需调整保留时长 find $BACKUP_DIR -type f \( -name "*.tar.gz" -o -name "*.sql.gz" \) -mtime +7 -delete
给脚本添加执行权限
在cPanel终端或者SSH中执行命令:chmod +x /home/你的cPanel用户名/wp_backups/wp_backup.sh配置cron job定时任务
- 登录cPanel后台,找到「Cron Jobs」功能入口
- 按需设置备份频率,比如每日凌晨2点备份,参数设置为:分钟填
0,小时填2,日、月、星期均填* - 命令栏填写:
/bin/sh /home/你的cPanel用户名/wp_backups/wp_backup.sh >/dev/null 2>&1 - 保存即可生效
备份注意事项
- 所有路径中的「你的cPanel用户名」需替换为实际的cPanel登录账户名,避免路径错误
- 可先手动执行一次备份脚本,确认备份文件正常生成且无报错,再配置定时任务
- 如果备份文件过大,可调整脚本的备份保留时长,避免占用过多服务器存储空间
二、最优恢复方案
全量恢复步骤
恢复站点文件
将需要恢复的日期对应的wp_files_xxxx.tar.gz上传到/home/你的cPanel用户名/public_html/my_wp目录下,执行解压命令:tar -zxf wp_files_xxxx.tar.gz
解压完成后确认文件权限:目录权限默认755,文件权限默认644,属主为你的cPanel用户名即可。恢复数据库
将对应日期的wp_db_xxxx.sql.gz上传到非web可访问目录,执行解压命令:gzip -d wp_db_xxxx.sql.gz
执行数据库导入命令:mysql -u你的数据库用户名 -p你的数据库密码 你的数据库名 < wp_db_xxxx.sql站点验证
访问站点前台和后台,确认所有功能正常。如果恢复后站点域名或部署路径有变动,可在wp-config.php中添加以下配置覆盖数据库中的站点地址设置:
define('WP_HOME', 'https://你的实际站点域名'); define('WP_SITEURL', 'https://你的实际站点域名');
部分恢复说明
- 仅需恢复单个/部分文件时,可直接从文件备份包中提取对应文件,覆盖到目标路径即可
- 仅需恢复单个数据表时,可从sql备份中提取对应表的SQL语句单独执行,无需全量导入
- 恢复操作前建议先对当前站点和数据库做临时备份,避免恢复失败导致现有数据丢失
内容的提问来源于stack exchange,提问作者Sebastian

