JSP项目在Ubuntu上如何备份与恢复
小樊
35
2025-12-16 05:09:22
JSP项目在Ubuntu上的备份与恢复
一、备份范围与准备
- 明确需要纳入备份的内容:
- 应用源码与静态资源:如 /var/lib/tomcat9/webapps/ROOT/ 或你的应用目录(WAR展开或源码目录)。
- 配置文件:如 /etc/tomcat9/(server.xml、web.xml 等)、应用专属配置。
- 数据与日志:如数据库备份(MySQL/MariaDB 使用 mysqldump)、Tomcat 日志 /var/log/tomcat9/(用于排错与审计)。
- 版本控制:建议使用 Git 管理源码,备份时优先推送至远端仓库,二次保险。
- 准备与检查:
- 确认 Tomcat 运行状态与版本:sudo systemctl status tomcat9、java -version。
- 规划备份目的地:本地磁盘、NFS、或远端服务器(如通过 rsync 或 scp)。
- 权限与安全:确保备份用户对应用与日志目录有读权限;备份文件加密与妥善存放。
二、推荐的备份方法
- 文件级备份(适合大多数JSP项目)
- 使用 rsync 增量同步(本地或远端):
- 本地备份:
- rsync -aAX --delete /var/lib/tomcat9/webapps/ /backup/tomcat/webapps/
- rsync -aAX /etc/tomcat9/ /backup/tomcat/etc/
- 远端备份:
- rsync -avz -e ssh /var/lib/tomcat9/webapps/ user@remote:/backup/tomcat/webapps/
- 说明:-aAX 保留权限、扩展属性与ACL,适合系统与应用文件;如仅需内容同步可用 -avz。
- 使用 tar 归档(一次性快照):
- 打包应用与配置:
- tar -czvf jsp_backup_$(date +%F).tar.gz -C /var/lib/tomcat9/webapps/ROOT/ .
- tar -czvf tomcat_conf_$(date +%F).tar.gz /etc/tomcat9/
- 远程拷贝:scp jsp_backup_*.tar.gz user@remote:/backup/
- 图形化工具(桌面环境):
- Deja Dup:sudo apt install deja-dup;选择源码或部署目录,设置本地/云端目标后执行备份。适合非服务器场景或快速上手。
- 数据库备份(如项目使用 MySQL/MariaDB)
- 逻辑备份(推荐):
- mysqldump -u[user] -p[pass] --single-transaction --routines --triggers --databases your_db > db_backup_$(date +%F).sql
- 远程备份:mysqldump … | ssh user@remote “cat > /backup/db_backup.sql”
- 恢复:mysql -u[user] -p[pass] < db_backup_2025-12-16.sql
- 系统级快照(可选,保护操作系统与配置)
- Timeshift(适合系统盘/配置回滚,非应用数据专用):
- 安装:sudo apt install timeshift;使用 RSYNC 或 Btrfs 快照;建议将快照存放在非系统盘。
三、恢复步骤
- 文件级恢复
- rsync 恢复(保持权限一致):
- rsync -aAX /backup/tomcat/webapps/ /var/lib/tomcat9/webapps/
- rsync -aAX /backup/tomcat/etc/ /etc/tomcat9/
- tar 归档恢复:
- 进入目标父目录后解压:
- cd /var/lib/tomcat9/webapps && tar -xzvf /backup/jsp_backup_2025-12-16.tar.gz
- tar -xzvf /backup/tomcat_conf_2025-12-16.tar.gz -C /
- 数据库恢复
- mysql -u[user] -p[pass] < db_backup_2025-12-16.sql
- 应用与权限
- 修正属主属组(以 Tomcat 为例):
- sudo chown -R tomcat9:tomcat9 /var/lib/tomcat9/webapps /var/log/tomcat9
- 重启服务:
- sudo systemctl restart tomcat9
- 验证
- 访问应用首页或关键页面,确认静态资源、数据库连接、登录与业务功能正常。
四、自动化与最佳实践
- 定时任务(crontab)
- 示例:每日 02:00 本地 rsync 增量备份,并保留 7 天。
- 0 2 * * * rsync -aAX --delete /var/lib/tomcat9/webapps/ /backup/tomcat/webapps/ >> /var/log/backup_tomcat.log 2>&1
- 0 2 * * * rsync -aAX /etc/tomcat9/ /backup/tomcat/etc/ >> /var/log/backup_tomcat.log 2>&1
- 0 1 * * * mysqldump -u[user] -p[pass] --single-transaction --routines --triggers your_db | gzip > /backup/db/your_db_$(date +%F).sql.gz
- 远端与离线
- 结合 rsync over SSH 或 scp 做异地/离线副本;重要归档可再同步至对象存储或磁带。
- 版本控制与发布
- 源码纳入 Git,日常提交与打标签(如 git tag v1.2.3);回滚时检出对应提交并重新部署。
- 监控与验证
- 定期校验备份完整性(如 sha256sum)、抽样恢复演练;保留 至少 7–30 天 的滚动备份。
- 注意事项
- 执行文件级备份/恢复时,尽量在 Tomcat 停止或低峰期 进行,避免文件被占用或写入不一致;恢复后务必 重启 Tomcat 并查看 /var/log/tomcat9/catalina.out 等日志确认无异常。