Ubuntu LAMP系统备份与恢复指南
LAMP(Linux、Apache、MySQL、PHP)是常见的Web服务栈,备份与恢复其组件(数据库、网站文件、配置文件)是保障业务连续性的关键。以下是具体操作步骤及最佳实践:
MySQL数据库是LAMP的核心数据存储,推荐使用mysqldump工具进行逻辑备份(生成可读的SQL文件),适合中小型数据库。
步骤:
mysqldump -u 用户名 -p 数据库名 > 备份文件路径.sql(如mysqldump -u root -p mywebsite > /backup/mywebsite_$(date +%F).sql)。mysqldump -u root -p mywebsite | gzip > /backup/mywebsite_$(date +%F).sql.gz。网站文件(HTML、CSS、PHP、图片等)通常存放在/var/www/html目录,使用tar命令打包压缩可保留目录结构。
步骤:
tar -czvf /backup/website_backup_$(date +%F).tar.gz -C /var/www/html .(-C指定源目录,.表示当前目录所有内容)。/backup目录,包含/var/www/html下的所有文件和子目录。Apache和PHP的配置文件决定了Web服务的运行参数,备份这些文件可在恢复时快速还原环境。
步骤:
cp /etc/apache2/apache2.conf /backup/apache2.conf.bak。cp -r /etc/php/8.1/apache2 /backup/php8.1_apache2.bak。/etc/apache2/sites-available/、/etc/php/8.1/等目录。通过cron定时任务实现定期自动备份,避免手动操作遗漏。
步骤:
/usr/local/bin/backup_lamp.sh),内容整合数据库和网站文件备份:#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%F)
# 备份数据库
mysqldump -u root -p mywebsite > "$BACKUP_DIR/mywebsite_$DATE.sql"
# 备份网站文件
tar -czvf "$BACKUP_DIR/website_$DATE.tar.gz" -C /var/www/html .
chmod +x /usr/local/bin/backup_lamp.sh。crontab:crontab -e,添加定时任务(如每天凌晨2点执行):0 2 * * * /usr/local/bin/backup_lamp.sh。数据库恢复需先创建目标数据库(若不存在),再将备份的SQL文件导入。
步骤:
mysql -u root -p。CREATE DATABASE 新数据库名;(如CREATE DATABASE mywebsite_restored;)。exit;。mysql -u root -p 新数据库名 < 备份文件路径.sql(如mysql -u root -p mywebsite_restored < /backup/mywebsite_2025-09-18.sql)。gunzip < /backup/mywebsite_2025-09-18.sql.gz | mysql -u root -p mywebsite_restored。将备份的网站文件解压到原始目录(/var/www/html),需确保文件权限正确(通常为www-data:www-data)。
步骤:
tar -xzvf /backup/website_backup_2025-09-18.tar.gz -C /var/www/html。chown -R www-data:www-data /var/www/html(www-data是Apache默认用户)。将备份的配置文件复制回原始位置,覆盖现有文件前建议备份当前配置。
步骤:
cp /backup/apache2.conf.bak /etc/apache2/apache2.conf。cp -r /backup/php8.1_apache2.bak /etc/php/8.1/apache2。systemctl restart apache2(使配置生效)。gpg加密备份文件:gpg -c /backup/mywebsite.sql(生成mywebsite.sql.gpg)。cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak)。cron任务的执行状态,及时处理失败情况。