Debian Java项目如何备份与恢复
导读:Debian Java项目备份与恢复实操指南 一 备份范围与策略 备份范围建议覆盖:应用代码与配置(如**/opt/myapp**、/var/lib/myapp)、外部化配置(如**/etc/myapp/)、日志(如/var/log/my...
Debian Java项目备份与恢复实操指南
一 备份范围与策略
- 备份范围建议覆盖:应用代码与配置(如**/opt/myapp**、/var/lib/myapp)、外部化配置(如**/etc/myapp/)、日志(如/var/log/myapp/)、构建产物(如target/或build/)、以及数据库(如MySQL/PostgreSQL**)。
- 备份策略建议:日常做全量+增量,关键数据做异地/离线副本;对数据库采用逻辑备份(导出SQL)或物理备份(文件系统/快照);对大型日志可按日归档并定期清理。
- 一致性建议:对写入频繁的应用,备份前尽量短暂停写或切换维护模式;数据库备份优先使用应用停写+导出或事务一致性快照的方式。
二 备份步骤与常用命令
- 应用与配置打包(示例):
- 全量打包并排除易变或易重建目录:
tar -czvf myapp_$(date +%F).tar.gz -C /opt myapp --exclude=myapp/logs --exclude=myapp/tmp --exclude=myapp/build - 仅备份配置与数据子目录:
tar -czvf myapp_conf_$(date +%F).tar.gz /opt/myapp/conf /var/lib/myapp /etc/myapp
- 全量打包并排除易变或易重建目录:
- 数据库备份:
- MySQL:
mysqldump -uuser -ppassword --single-transaction --routines --triggers --hex-blob dbname > backup_$(date +%F).sql - PostgreSQL:
pg_dump -U user -h localhost -F c -b -v -f backup_$(date +%F).dump dbname
- MySQL:
- 增量与远程同步:
- 本地/远程增量同步(首次全量,其后增量):
rsync -avz --delete /opt/myapp/ backup@backup01:/data/backup/myapp/
- 本地/远程增量同步(首次全量,其后增量):
- 自动化与工具:
- 定时任务(每日02:00全量打包):
crontab -e
0 2 * * * /usr/local/bin/backup_myapp.sh - 使用BackupNinja编排备份任务(安装、向导配置、执行):
sudo apt-get install backupninja
sudo ninja-config --name mybackup
sudo ninja-backup mybackup
- 定时任务(每日02:00全量打包):
- 备份保留与校验:
- 保留7–30天并做校验和(示例):
sha256sum myapp_.tar.gz > checksums.sha256
find /backup -name "myapp_.tar.gz" -mtime +30 -delete
- 保留7–30天并做校验和(示例):
三 恢复步骤与示例
- 应用与配置恢复:
- 解压到目标路径(保持权限与时间戳):
sudo tar -xzvf myapp_2025-12-05.tar.gz -C / - 仅恢复配置:
sudo tar -xzvf myapp_conf_2025-12-05.tar.gz -C /
- 解压到目标路径(保持权限与时间戳):
- 数据库恢复:
- MySQL:
mysql -uuser -ppassword dbname < backup_2025-12-05.sql - PostgreSQL:
pg_restore -U user -h localhost -d dbname -v backup_2025-12-05.dump
- MySQL:
- 增量/远程恢复:
- 将增量数据同步回本地:
rsync -avz --delete backup@backup01:/data/backup/myapp/ /opt/myapp/
- 将增量数据同步回本地:
- 使用BackupNinja恢复:按所用工具的文档执行恢复流程(如 ninja-restore 等)。
四 环境与构建链备份
- APT环境备份与恢复(适用于通过APT安装的JDK/依赖):
- 备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
apt list --installed > /backup/java_packages.txt - 恢复:
sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --reinstall $(cat /backup/java_packages.txt)
- 备份:
- 手动安装的JDK/JRE目录备份与恢复:
- 备份:
sudo tar -czvf jdk_backup_$(date +%F).tar.gz -C /usr/lib/jvm . - 恢复:
sudo tar -xzvf jdk_backup_$(date +%F).tar.gz -C /usr/lib/jvm
- 备份:
- 环境变量与Shell配置:
- 备份:
sudo cp /etc/environment /etc/environment.bak
cp ~/.bashrc ~/.bashrc.bak - 恢复:
sudo cp /etc/environment.bak /etc/environment
source /etc/environment & & source ~/.bashrc
- 备份:
- 构建链(Maven/Gradle)与本地仓库:
- 建议纳入版本控制或制品仓库(如Nexus/Artifactory);如必须备份本地仓库,可打包**~/.m2/repository或~/.gradle/caches**,并在恢复后执行mvn clean install或gradle build验证。
五 自动化与最佳实践
- 备份脚本模板(含校验与保留):
- 示例:
#!/usr/bin/env bash
set -Eeuo pipefail
APP_DIR=“/opt/myapp”
BACKUP_DIR=“/backup/myapp”
TS=$(date +%F)
mkdir -p “$BACKUP_DIR”
tar -czvf “$BACKUP_DIR/app_$TS.tar.gz” -C “$APP_DIR” . --exclude=“$APP_DIR/logs” --exclude=“$APP_DIR/tmp”
sha256sum “$BACKUP_DIR/app_$TS.tar.gz” > > “$BACKUP_DIR/checksums.sha256”
find “$BACKUP_DIR” -name “app_*.tar.gz” -mtime +14 -delete
- 示例:
- 定时任务:
- 每日02:00执行:
0 2 * * * /usr/local/bin/backup_myapp.sh > > /var/log/backup_myapp.log 2> & 1
- 每日02:00执行:
- 远程与加密传输:
- 可用Duplicity做加密增量备份,或使用rsync通过SSH进行安全传输;重要备份建议至少两份异地副本。
- 验证与演练:
- 定期做恢复演练与校验和验证,确保备份可用;对数据库恢复优先在预备环境验证一致性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Java项目如何备份与恢复
本文地址: https://pptw.com/jishu/764715.html
