发布于2026-07-16 阅读(0)
扫一扫,手机访问
在日常运维中,Ja va环境的备份与恢复是基本功,但真要动手时,不少人还是会卡在“该备份哪些东西”“恢复后怎么验证”这些细节上。下面这份指南,把整个流程拆开揉碎了讲清楚,从准备工作到自动化脚本,再到快速回滚,一步都不落下。

备份之前,得先明确到底要保护什么。核心对象其实就四类:
/usr/lib/jvm 或 /usr/ja va,要看具体发行版而定。/etc/profile、/etc/profile.d/ja va.sh,这些文件里藏着 JA VA_HOME、PATH 等关键设置。/opt/tomcat 或 /usr/local/tomcat 最好都备份,但重点在 conf/ 目录下的配置文件。动手前先定位好当前环境:ja va -version 看看版本,update-alternatives --list ja va 列出系统里都装了哪些 Ja va,再用 ls /usr/lib/jvm 或 ls /usr/ja va 确认实际安装目录。建议先建一个统一的备份目录,比如 /backup/ja va,并确认磁盘空间够用、sudo 权限到位。
备份实操就按下面这几步走,每一步都有对应的命令,直接复制粘贴就能用(注意替换实际路径)。
sudo tar -czvf /backup/ja va/jdk_$(date +%F).tar.gz /usr/lib/jvm/ja va-11-openjdk
推荐把环境变量写在独立的文件里,比如 /etc/profile.d/ja va.sh,备份起来最方便:
sudo cp /etc/profile.d/ja va.sh /backup/ja va/ja va.sh.bak
如果习惯写在 /etc/profile 里,那就整体备份这个文件:
sudo cp /etc/profile /backup/ja va/profile.bak
全量备份整个目录:
sudo tar -czvf /backup/ja va/tomcat_$(date +%F).tar.gz /opt/tomcat
如果只想保留配置文件,可以单独只打包 conf 目录:
sudo tar -czvf /backup/ja va/tomcat_conf_$(date +%F).tar.gz /opt/tomcat/conf
sudo tar -czvf /backup/ja va/app_data_$(date +%F).tar.gz /opt/app/data
sudo tar -czvf /backup/ja va/app_logs_$(date +%F).tar.gz /opt/app/logs
把上面这些操作写成脚本,再配上定时任务,才算真正的高枕无忧。下面是一份可以直接用的 backup_ja va.sh:
#!/bin/bash
BACKUP_DIR="/backup/ja va"
DATE=$(date +%F)
mkdir -p "$BACKUP_DIR"
# JDK
JA VA_DIR=$(readlink -f /usr/bin/ja va | sed 's|/bin/ja va$||')
[ -d "$JA VA_DIR" ] && sudo tar -czvf "$BACKUP_DIR/jdk_$DATE.tar.gz" -C "$JA VA_DIR" .
# Env
[ -f /etc/profile.d/ja va.sh ] && sudo cp /etc/profile.d/ja va.sh "$BACKUP_DIR/ja va.sh.bak_$DATE"
# Tomcat
[ -d /opt/tomcat ] && sudo tar -czvf "$BACKUP_DIR/tomcat_$DATE.tar.gz" -C /opt/tomcat .
# App
[ -d /opt/app/data ] && sudo tar -czvf "$BACKUP_DIR/app_data_$DATE.tar.gz" -C /opt/app/data .
[ -d /opt/app/logs ] && sudo tar -czvf "$BACKUP_DIR/app_logs_$DATE.tar.gz" -C /opt/app/logs .
echo "Backup completed at $DATE"
给脚本加上执行权限,然后通过 cron 每天凌晨 1 点自动执行:
chmod +x backup_ja va.sh
echo "0 1 * * * /path/backup_ja va.sh" | sudo tee /etc/cron.d/ja va_backup
生产环境的日志文件会持续增长,建议用 logrotate 做按日轮转和压缩,保留最近 30 天,避免磁盘爆满。新建配置文件 /etc/logrotate.d/ja va,内容如下:
/opt/app/logs/*.log {
daily
rotate 30
compress
missingok
notifempty
create 0644 app app
}
创建后先测试一下:logrotate -d /etc/logrotate.d/ja va,确认无误后再重载服务:sudo systemctl reload logrotate。
备份做好了,恢复就是逆向操作。但要注意恢复顺序:先恢复 JDK 和环境变量,再恢复中间件和应用,最后做验证。
sudo tar -xzvf /backup/ja va/jdk_YYYY-MM-DD.tar.gz -C /usr/lib/jvm
如果系统用了 alternatives 管理多版本,还需要重新注册并设置默认版本:
sudo alternatives --install /usr/bin/ja va ja va /usr/lib/jvm/ja va-11-openjdk/bin/ja va 100
sudo alternatives --config ja va # 交互式选择
推荐方式(独立文件):
sudo cp /backup/ja va/ja va.sh.bak_YYYY-MM-DD /etc/profile.d/ja va.sh && source /etc/profile
备选方式(整体覆盖 /etc/profile):
sudo cp /backup/ja va/profile.bak_YYYY-MM-DD /etc/profile && source /etc/profile
# Tomcat
sudo tar -xzvf /backup/ja va/tomcat_YYYY-MM-DD.tar.gz -C /opt/tomcat
# 应用数据
sudo tar -xzvf /backup/ja va/app_data_YYYY-MM-DD.tar.gz -C /opt/app/data
# 应用日志
sudo tar -xzvf /backup/ja va/app_logs_YYYY-MM-DD.tar.gz -C /opt/app/logs
启动应用或中间件,比如 /opt/tomcat/bin/startup.sh 或 ja va -jar /opt/app/app.jar &,然后依次检查:
ja va -version 确认版本正确update-alternatives --config ja va 确认默认 Ja va 无误ps -ef | grep ja va 确认进程已启动tail -f /opt/app/logs/*.log 观察是否有异常恢复完成后,不光要看进程在不在,还要确认路径和配置都指向正确的地方。
ja va -version、which ja va、readlink -f $(which ja va) 必须指向恢复后的 JA VA_HOME/bin/ja va。echo $JA VA_HOME 和 echo $PATH 应该包含恢复后的路径。sha256sum 对比备份包和当前目录的哈希值,确保文件没有损坏。如果恢复后发现有问题,快速回滚的办法很简单——重复上面的“恢复步骤”,把时间戳替换成上一个备份点即可。
最后几点经验之谈,值得记下来:
/usr/bin/ja va 层面灵活切换默认 Ja va,避免了 PATH 混乱的问题。chown -R app:app /opt/app 把文件属主改回来,否则应用可能没有权限读数据或写日志。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8