温馨提示×

CentOS Java如何进行备份恢复

小樊
40
2025-12-05 12:55:13
栏目: 编程语言

CentOS Java备份与恢复实操指南

一 备份范围与准备

  • 明确备份对象:
    • JDK/JRE 安装目录(常见路径:/usr/lib/jvm/usr/java
    • 环境变量配置(如:/etc/profile/etc/profile.d/java.sh
    • Java 应用与中间件配置(如 Tomcat:/opt/tomcat 或 /usr/local/tomcat,重点在 conf/ 等)
    • 应用数据与日志(业务数据目录、日志目录)
  • 先定位 Java 安装路径与当前版本:
    • 查看版本:java -version
    • 列出可用 Java:update-alternatives --list java
    • 查找安装目录:ls /usr/lib/jvmls /usr/java
  • 建议准备一个备份目录(示例:/backup/java),并确保有足够磁盘空间sudo 权限

二 备份步骤

  • 备份 JDK/JRE 目录(按实际路径调整):
    • 示例:sudo tar -czvf /backup/java/jdk_$(date +%F).tar.gz /usr/lib/jvm/java-11-openjdk
  • 备份环境变量配置:
    • 推荐集中到独立文件:sudo cp /etc/profile.d/java.sh /backup/java/java.sh.bak
    • 如使用 /etc/profile,可整体备份:sudo cp /etc/profile /backup/java/profile.bak
  • 备份中间件配置(以 Tomcat 为例):
    • 全量:sudo tar -czvf /backup/java/tomcat_$(date +%F).tar.gz /opt/tomcat
    • 仅配置:sudo tar -czvf /backup/java/tomcat_conf_$(date +%F).tar.gz /opt/tomcat/conf
  • 备份应用数据与日志(示例):
    • 数据:sudo tar -czvf /backup/java/app_data_$(date +%F).tar.gz /opt/app/data
    • 日志:sudo tar -czvf /backup/java/app_logs_$(date +%F).tar.gz /opt/app/logs
  • 自动化脚本示例(backup_java.sh):
    • 内容:
      #!/bin/bash
      BACKUP_DIR="/backup/java"
      DATE=$(date +%F)
      mkdir -p "$BACKUP_DIR"
      
      # JDK
      JAVA_DIR=$(readlink -f /usr/bin/java | sed 's|/bin/java$||')
      [ -d "$JAVA_DIR" ] && sudo tar -czvf "$BACKUP_DIR/jdk_$DATE.tar.gz" -C "$JAVA_DIR" .
      
      # Env
      [ -f /etc/profile.d/java.sh ] && sudo cp /etc/profile.d/java.sh "$BACKUP_DIR/java.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"
      
    • 赋权与定时(每天 1 点):
      • chmod +x backup_java.sh
      • echo "0 1 * * * /path/backup_java.sh" | sudo tee /etc/cron.d/java_backup
  • 日志轮转建议(logrotate,长期保留与压缩):
    • 新建:sudo tee /etc/logrotate.d/java <<'EOF'
      /opt/app/logs/*.log {
        daily
        rotate 30
        compress
        missingok
        notifempty
        create 0644 app app
      }
      EOF`
      
    • 测试:logrotate -d /etc/logrotate.d/java
    • 生效:sudo systemctl reload logrotate

三 恢复步骤

  • 恢复 JDK/JRE:
    • 解压:sudo tar -xzvf /backup/java/jdk_YYYY-MM-DD.tar.gz -C /usr/lib/jvm
    • 设置默认版本(如使用 alternatives):
      sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk/bin/java 100
      sudo alternatives --config java   # 交互选择
      
  • 恢复环境变量:
    • 方式一(推荐):sudo cp /backup/java/java.sh.bak_YYYY-MM-DD /etc/profile.d/java.sh && source /etc/profile
    • 方式二:sudo cp /backup/java/profile.bak_YYYY-MM-DD /etc/profile && source /etc/profile
  • 恢复中间件与应用:
    • Tomcat:sudo tar -xzvf /backup/java/tomcat_YYYY-MM-DD.tar.gz -C /opt/tomcat
    • 应用数据:sudo tar -xzvf /backup/java/app_data_YYYY-MM-DD.tar.gz -C /opt/app/data
    • 应用日志:sudo tar -xzvf /backup/java/app_logs_YYYY-MM-DD.tar.gz -C /opt/app/logs
  • 启动与验证:
    • 启动应用或中间件(如:/opt/tomcat/bin/startup.shjava -jar /opt/app/app.jar &
    • 验证:java -versionupdate-alternatives --config javaps -ef | grep javatail -f /opt/app/logs/*.log

四 验证与回滚

  • 版本与路径校验:
    • java -versionwhich javareadlink -f $(which java) 应指向恢复后的 JAVA_HOME/bin/java
  • 配置生效:
    • echo $JAVA_HOMEecho $PATH 应包含恢复后的路径
  • 完整性校验(可选):
    • 对关键目录做哈希对比:sha256sum /usr/lib/jvm/java-11-openjdk /backup/java/jdk_YYYY-MM-DD.tar.gz
  • 快速回滚:
    • 重复“恢复步骤”,指向上一个备份时间点的压缩包与配置文件即可。

五 注意事项与最佳实践

  • 变更前必备份:在执行 JDK 升级/切换版本 前先备份 JDK 与环境变量,便于回滚。
  • 使用 alternatives 管理多版本:便于在 /usr/bin/java 层面切换默认 Java,避免 PATH 混乱。
  • 日志策略:生产环境建议用 logrotate 做按日轮转与压缩,长期保留关键业务日志。
  • 权限与属主:恢复后用 chown -R app:app /opt/app 等确保应用用户对数据与日志有正确权限。
  • 定期演练:定期在测试环境演练恢复流程,验证备份可用性与恢复时长(RTO/RPO 目标)。

0