Ubuntu Apache服务器备份与恢复指南
Apache的核心配置文件位于/etc/apache2/
目录(包括apache2.conf
主配置文件、ports.conf
端口设置、sites-available/
虚拟主机配置等)。推荐使用tar
命令打包压缩,保留目录结构:
sudo tar -czvf /backup/apache2_config_$(date +%Y%m%d).tar.gz /etc/apache2/
若需备份单个虚拟主机配置(如example.com.conf
),可直接复制到备份目录:
sudo cp /etc/apache2/sites-available/example.com.conf /backup/
注意:备份前建议停止Apache服务,避免配置文件被锁定导致数据不一致:
sudo systemctl stop apache2
默认情况下,网站文件存放在/var/www/html/
目录(若使用自定义路径,需调整命令)。使用tar
命令备份:
sudo tar -czvf /backup/website_files_$(date +%Y%m%d).tar.gz /var/www/html/
若需增量备份(仅备份新增/修改的文件),可使用rsync
命令:
sudo rsync -av --delete /var/www/html/ /backup/www_backup/
说明:--delete
参数会同步删除备份目录中不存在的文件,确保备份一致性。
若网站依赖MySQL/MariaDB数据库(如WordPress、Drupal),需使用mysqldump
导出数据库:
sudo mysqldump -u [数据库用户名] -p[数据库密码] [数据库名] > /backup/db_backup_$(date +%Y%m%d).sql
示例(备份名为wordpress
的数据库):
sudo mysqldump -u root -p wordpress > /backup/wordpress_backup.sql
若使用PostgreSQL数据库,替换为pg_dump
命令:
sudo -u postgres pg_dump [数据库名] > /backup/db_backup_$(date +%Y%m%d).sql
通过cron
定时任务实现每日自动备份。编辑当前用户的crontab:
sudo crontab -e
添加以下内容(每日凌晨2点执行备份脚本):
0 2 * * * /path/to/backup_script.sh
备份脚本示例(backup_script.sh
):
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
# 备份配置文件
sudo tar -czvf "$BACKUP_DIR/apache2_config_$DATE.tar.gz" /etc/apache2/
# 备份网站文件
sudo tar -czvf "$BACKUP_DIR/website_files_$DATE.tar.gz" /var/www/html/
# 备份数据库
sudo mysqldump -u root -p'your_password' wordpress > "$BACKUP_DIR/db_backup_$DATE.sql"
# 删除7天前的备份(可选)
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;
注意:给脚本添加执行权限:
sudo chmod +x /path/to/backup_script.sh
将备份的配置文件解压到原目录(如/etc/apache2/
):
sudo tar -xzvf /backup/apache2_config_20250919.tar.gz -C /
若恢复单个虚拟主机配置,复制到sites-available/
目录并启用:
sudo cp /backup/example.com.conf /etc/apache2/sites-available/
sudo a2ensite example.com.conf # 启用站点
验证配置语法(避免启动失败):
sudo apachectl configtest
若输出Syntax OK
,则重启Apache服务:
sudo systemctl restart apache2
解压备份的网站文件到/var/www/html/
目录:
sudo tar -xzvf /backup/website_files_20250919.tar.gz -C /
若使用rsync
备份,反向同步即可:
sudo rsync -av --delete /backup/www_backup/ /var/www/html/
注意:恢复后需检查文件权限(通常为www-data:www-data
):
sudo chown -R www-data:www-data /var/www/html/
若备份的是MySQL数据库,使用mysql
命令导入:
sudo mysql -u [数据库用户名] -p[数据库密码] [数据库名] < /backup/db_backup_20250919.sql
示例(恢复wordpress
数据库):
sudo mysql -u root -p wordpress < /backup/wordpress_backup.sql
若使用PostgreSQL,替换为psql
命令:
sudo -u postgres psql [数据库名] < /backup/db_backup_20250919.sql
/var/log/apache2/error.log
):sudo tail -f /var/log/apache2/error.log
sudo apt-get update
sudo apt-get install --reinstall apache2