在Ubuntu上备份LNMP(Linux+Nginx+MySQL+PHP)数据,可按以下步骤操作,涵盖数据库、配置文件及系统备份,并支持自动化:
使用mysqldump
工具导出数据库为SQL文件,可压缩存储:
# 备份所有数据库
mysqldump -u root -p --all-databases > /path/to/backup/mysql_all_$(date +%Y%m%d).sql
# 备份单个数据库(如需指定)
mysqldump -u root -p database_name > /path/to/backup/db_name_$(date +%Y%m%d).sql
# 压缩备份文件(可选)
gzip /path/to/backup/*.sql
说明:需替换root
、password
及数据库名为实际信息,建议将脚本保存为backup_db.sh
并赋予执行权限chmod +x
。
备份Nginx和PHP关键配置文件:
# 备份Nginx配置
sudo tar -czvf nginx_backup_$(date +%Y%m%d).tar.gz /etc/nginx/
# 备份PHP配置(如php.ini)
sudo tar -czvf php_backup_$(date +%Y%m%d).tar.gz /etc/php/
说明:路径可根据实际安装位置调整,如Nginx配置可能在/etc/nginx/conf.d/
。
备份Web根目录(如/var/www/html
)及用户数据:
sudo tar -czvf website_backup_$(date +%Y%m%d).tar.gz /var/www/html/
说明:若使用虚拟主机或多站点,需备份对应目录。
使用Timeshift
或Deja Dup
备份整个系统镜像:
# 安装Timeshift
sudo apt install timeshift
# 执行备份(选择RSYNC模式,指定备份路径)
sudo timeshift --create --comments "LNMP System Backup"
说明:适合全盘恢复,需预留足够磁盘空间。
编写脚本整合上述备份步骤,通过crontab
定时执行:
/path/to/lnmp_backup.sh
:#!/bin/bash
# 备份数据库
mysqldump -u root -p --all-databases > /backup/mysql_$(date +%Y%m%d).sql
# 备份配置文件
tar -czvf /backup/nginx_$(date +%Y%m%d).tar.gz /etc/nginx/
tar -czvf /backup/php_$(date +%Y%m%d).tar.gz /etc/php/
# 备份网站文件
tar -czvf /backup/website_$(date +%Y%m%d).tar.gz /var/www/html/
# 删除7天前备份(可选)
find /backup -name "*.tar.gz" -mtime +7 -exec rm -f {} \;
chmod +x /path/to/lnmp_backup.sh
crontab -e
# 添加以下行(每天凌晨3点执行)
0 3 * * * /path/to/lnmp_backup.sh
scp
命令)。参考来源: