一、备份前的准备工作
systemctl stop your-java-app.service或kill -9 <PID>),避免数据不一致。二、核心数据与文件备份方法
mysqldump导出数据库为SQL文件,支持压缩以节省空间。mysqldump -u [username] -p[password] [database_name] > /path/to/backup/[db_name]_$(date +%Y%m%d).sql-C参数启用压缩,或通过管道传递给gzip:mysqldump -u user -p db | gzip > db_backup.sql.gz。pg_dump导出,语法类似:pg_dump -U [username] -W -F c [database_name] > /path/to/backup/[db_name].dump(-F c表示自定义格式,支持压缩)。tar命令将Java项目目录(含代码、src、target、config等)打包为压缩文件,保留文件属性。tar -czvf /path/to/backup/java_app_$(date +%Y%m%d).tar.gz /path/to/java/app。rsync -avzh /path/to/java/app /path/to/backup/app --delete(--delete同步删除备份目录中多余的文件)。sudo apt-clone clone /path/to/backup/java_packages.apt-clone(生成.tar.gz文件)。java -version)及安装路径(如/usr/lib/jvm/java-11-openjdk-amd64),避免恢复时混淆。三、工具化备份方案(简化操作)
sudo apt install timeshift;配置:打开Timeshift,选择“RSYNC”类型,设置备份位置(如外接硬盘),点击“创建”生成系统快照。sudo apt install duplicity;示例:duplicity /path/to/java/app sftp://user@remote_host/backup/path(加密需添加--encrypt-key参数)。sudo apt install borgbackup;初始化仓库:borg init --encryption=repokey /path/to/backup/repo;备份:borg create --stats /path/to/backup/repo::java_app_{now:%Y-%m-%d} /path/to/java/app。docker build -t my-java-app .(构建镜像);docker save -o /path/to/backup/my-java-app.tar my-java-app(保存镜像)。/var/lib/docker/volumes/java_app_data)。四、自动化备份(避免遗漏)
crontab设置定时任务,定期执行备份脚本。crontab(crontab -e),添加以下行(每天凌晨2点执行备份脚本):0 2 * * * /bin/bash /path/to/backup_script.shbackup_script.sh):包含数据库备份、应用打包、压缩等命令,并添加执行权限(chmod +x /path/to/backup_script.sh)。五、恢复步骤
mysql命令导入备份的SQL文件。mysql -u [username] -p[password] [database_name] < /path/to/backup/[db_name]_20250101.sql。pg_restore导入(自定义格式):pg_restore -U [username] -d [database_name] /path/to/backup/[db_name].dump。tar解压备份的压缩包到原目录。tar -xzvf /path/to/backup/java_app_20250101.tar.gz -C /path/to/java/app。rsync -avzh /path/to/backup/app/ /path/to/java/app。apt-clone恢复已安装的Java包。sudo apt-clone restore /path/to/backup/java_packages.apt-clone,然后运行sudo apt-get update更新包列表。sudo apt install openjdk-11-jdk)。六、注意事项
chmod 600),避免敏感信息泄露。