CentOS系统如何进行网站备份与恢复
导读:CentOS网站备份与恢复实操指南 一 备份范围与准备 明确需要纳入备份的范围:网站文件(如 /var/www/html 或自定义 DocumentRoot)、数据库(MySQL/MariaDB 或 PostgreSQL)、以及 Web...
CentOS网站备份与恢复实操指南
一 备份范围与准备
- 明确需要纳入备份的范围:网站文件(如 /var/www/html 或自定义 DocumentRoot)、数据库(MySQL/MariaDB 或 PostgreSQL)、以及 Web 服务配置(Nginx:/etc/nginx;Apache:/etc/httpd),必要时可包含日志(如 /var/log/nginx 或 /var/log/httpd)。
- 准备备份存储目录(如 /backup),并确保运行备份的用户对相关目录有读写权限;数据库备份建议使用具备足够权限的数据库账户。
- 建议先在测试环境演练恢复流程,验证备份的可用性与完整性。
二 手动备份与恢复步骤
- 文件备份与恢复
- 备份:
- Nginx:tar -czvf /backup/nginx_conf_$(date +%F).tar.gz /etc/nginx
- Apache:tar -czvf /backup/httpd_conf_$(date +%F).tar.gz /etc/httpd
- 网站文件:tar -czvf /backup/www_$(date +%F).tar.gz /var/www/html
- 恢复:
- Nginx:tar -xzvf /backup/nginx_conf_$(date +%F).tar.gz -C /
- Apache:tar -xzvf /backup/httpd_conf_$(date +%F).tar.gz -C /
- 网站文件:tar -xzvf /backup/www_$(date +%F).tar.gz -C /
- 备份:
- 数据库备份与恢复
- MySQL/MariaDB:
- 备份单库:mysqldump -u 用户名 -p 数据库名 > /backup/db_$(date +%F).sql
- 备份全库:mysqldump -u root -p --all-databases > /backup/all_databases_$(date +%F).sql
- 恢复:mysql -u 用户名 -p 数据库名 < /backup/db_$(date +%F).sql(全库恢复使用 mysql -u root -p < /backup/all_databases_$(date +%F).sql)
- PostgreSQL:
- 备份:pg_dumpall > /backup/pg_all_$(date +%F).sql
- 恢复:psql -U 用户名 -f /backup/pg_all_$(date +%F).sql
- MySQL/MariaDB:
- 服务配置校验与重启
- Nginx:nginx -t & & systemctl restart nginx
- Apache:httpd -t & & systemctl restart httpd
三 自动化备份脚本与定时任务
- 示例脚本 backup.sh(按时间戳组织备份,含全库备份与本地保留策略)
#!/bin/bash set -e BACKUP_DIR="/backup/$(date +%F_%H%M%S)" mkdir -p "$BACKUP_DIR" # 网站文件 tar -czvf "$BACKUP_DIR/www.tar.gz" -C /var/www html # 数据库(全库) mysqldump -u root -p --single-transaction --routines --triggers --hex-blob --all-databases \ > "$BACKUP_DIR/all_databases.sql" # 配置与服务 tar -czvf "$BACKUP_DIR/nginx_conf.tar.gz" -C /etc nginx # 保留最近7天 find /backup -maxdepth 1 -type d -mtime +7 -exec rm -rf { } \;- 赋权与定时:
- chmod +x /root/backup.sh
- crontab -e 添加:0 2 * * * /root/backup.sh(每日 02:00 执行)
- 赋权与定时:
- 远程与多方式留存(可选)
- FTP 上传示例(脚本内使用 ftp 或 lftp 将 $BACKUP_DIR 下文件传至远程 FTP,并清理远端过期备份)。
- 也可扩展为将备份同步至对象存储或异地服务器,提升容灾能力。
四 增量备份与异地容灾
- 文件级增量备份(rsync)
- 首次全量:rsync -aAX --delete /var/www/html /backup/html_full/
- 日常增量:rsync -aAX --delete /var/www/html /backup/html_incr/
- 恢复:rsync -aAX /backup/html_full/ /var/www/html 或 rsync -aAX /backup/html_incr/ /var/www/html
- 数据库变更捕获(适用于频繁写入)
- 在备份前临时开启二进制日志(如 MySQL 的 binlog),将备份时刻之后的 binlog 一并归档,便于时间点恢复(PITR)。
- 系统级与灾难恢复
- 需要整机级回滚时,可使用 Relax-and-Recover(ReaR) 进行系统级备份与救援恢复(适合硬件故障、系统崩溃等场景)。
五 恢复流程与验证清单
- 恢复顺序建议:先恢复数据库,再恢复网站文件,最后恢复配置并校验服务。
- 配置与服务
- Nginx:tar -xzvf /backup/nginx_conf_*.tar.gz -C / & & nginx -t & & systemctl restart nginx
- Apache:tar -xzvf /backup/httpd_conf_*.tar.gz -C / & & httpd -t & & systemctl restart httpd
- 数据库
- 单库:mysql -u 用户名 -p 数据库名 < /backup/db_*.sql
- 全库:mysql -u root -p < /backup/all_databases_*.sql
- 验证要点
- 访问站点首页与关键功能,确认静态资源、数据库连接、登录与写入正常。
- 抽查后台管理、文件上传、定时任务与缓存写入是否正常。
- 查看错误日志定位问题:Nginx(/var/log/nginx/error.log)、Apache(/var/log/httpd/error_log)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS系统如何进行网站备份与恢复
本文地址: https://pptw.com/jishu/759083.html
