插件窝 干货文章 CentOS搭建web服务器的配置备份与恢复指南

CentOS搭建web服务器的配置备份与恢复指南

备份 backup bash tar 471    来源:    2025-04-12

CentOS Web服务器配置备份与恢复指南

一、备份前的准备工作

  1. 确定需要备份的内容

    • 网站文件(通常位于/var/www/html或/home目录)
    • 数据库(MySQL/MariaDB或PostgreSQL)
    • 配置文件(Apache/Nginx, PHP, 防火墙等)
    • SSL证书
    • 系统关键配置文件(/etc目录)
  2. 创建备份目录

    mkdir -p /backup/{web,db,config}
    

二、网站文件备份

  1. 备份网站目录

    tar -czvf /backup/web/website_$(date +%Y%m%d).tar.gz /var/www/html/
    
  2. 备份用户主目录(如果网站位于/home下):

    tar -czvf /backup/web/home_sites_$(date +%Y%m%d).tar.gz /home/
    

三、数据库备份

  1. MySQL/MariaDB备份

    mysqldump -u root -p --all-databases > /backup/db/mysql_all_$(date +%Y%m%d).sql
    
  2. PostgreSQL备份

    sudo -u postgres pg_dumpall > /backup/db/pg_all_$(date +%Y%m%d).sql
    

四、配置文件备份

  1. 备份Web服务器配置

    # Apache
    tar -czvf /backup/config/apache_$(date +%Y%m%d).tar.gz /etc/httpd/
    
    # Nginx
    tar -czvf /backup/config/nginx_$(date +%Y%m%d).tar.gz /etc/nginx/
    
  2. 备份PHP配置

    tar -czvf /backup/config/php_$(date +%Y%m%d).tar.gz /etc/php.d/ /etc/php.ini
    
  3. 备份系统关键配置

    tar -czvf /backup/config/etc_$(date +%Y%m%d).tar.gz /etc/
    
  4. 备份SSL证书

    tar -czvf /backup/config/ssl_$(date +%Y%m%d).tar.gz /etc/ssl/
    

五、自动化备份脚本

创建/usr/local/bin/backup_server.sh

#!/bin/bash

# 定义备份目录
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)

# 创建日期目录
mkdir -p $BACKUP_DIR/$DATE

# 备份网站文件
tar -czvf $BACKUP_DIR/$DATE/website.tar.gz /var/www/html/

# 备份数据库
mysqldump -u root -pYOURPASSWORD --all-databases > $BACKUP_DIR/$DATE/mysql_all.sql

# 备份配置
tar -czvf $BACKUP_DIR/$DATE/apache_config.tar.gz /etc/httpd/
tar -czvf $BACKUP_DIR/$DATE/php_config.tar.gz /etc/php.d/ /etc/php.ini

# 保留最近7天的备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;

echo "Backup completed on $(date)" >> $BACKUP_DIR/backup.log

设置可执行权限:

chmod +x /usr/local/bin/backup_server.sh

添加到cron定时任务:

crontab -e

添加以下内容(每天凌晨2点执行):

0 2 * * * /usr/local/bin/backup_server.sh

六、备份验证

  1. 列出备份文件

    ls -lh /backup/
    
  2. 验证压缩包完整性

    gzip -t /backup/web/website_*.tar.gz
    
  3. 查看数据库备份内容

    head -n 20 /backup/db/mysql_all_*.sql
    

七、恢复操作

  1. 恢复网站文件

    tar -xzvf /backup/web/website_20230101.tar.gz -C /
    
  2. 恢复MySQL数据库

    mysql -u root -p < /backup/db/mysql_all_20230101.sql
    
  3. 恢复PostgreSQL数据库

    sudo -u postgres psql -f /backup/db/pg_all_20230101.sql
    
  4. 恢复配置文件

    # Apache
    tar -xzvf /backup/config/apache_20230101.tar.gz -C /
    
    # Nginx
    tar -xzvf /backup/config/nginx_20230101.tar.gz -C /
    
    # PHP
    tar -xzvf /backup/config/php_20230101.tar.gz -C /
    
  5. 重启服务

    # Apache
    systemctl restart httpd
    
    # Nginx
    systemctl restart nginx
    
    # PHP-FPM
    systemctl restart php-fpm
    

八、备份存储策略

  1. 本地存储:保留最近7天的备份
  2. 远程存储

    • 使用rsync同步到另一台服务器
    • 使用SCP上传到云存储
    • 使用AWS S3或类似服务
  3. 异地备份:定期将备份复制到物理介质并存储在安全位置

九、安全注意事项

  1. 备份文件权限

    chmod 600 /backup/*
    
  2. 加密敏感备份

    gpg -c /backup/db/mysql_all_20230101.sql
    
  3. 删除明文密码:确保脚本中不包含明文密码,使用配置文件或环境变量

  4. 定期测试恢复:每季度至少进行一次恢复测试

通过遵循本指南,您可以确保CentOS Web服务器的配置和数据得到妥善备份,并在需要时能够快速恢复服务。