Debian Java应用备份与恢复实操指南
一 备份范围与策略
二 快速上手命令示例
tar -czvf myapp_$(date +%F).tar.gz \
--exclude=/opt/myapp/logs \
--exclude=/opt/myapp/tmp \
--exclude=/opt/myapp/work \
/opt/myapp
rsync -avz --delete -e ssh /opt/myapp/ backup@192.0.2.10:/backup/myapp/
mysqldump -u USER -p --single-transaction --routines --triggers --default-character-set=utf8mb4 \
--databases mydb > mydb_$(date +%F).sql
pg_dump -U USER -h localhost -d mydb -F c -f mydb_$(date +%F).dump
crontab -e
0 2 * * * /usr/bin/tar -czvf /backup/myapp_$(date +\%F).tar.gz --exclude=/opt/myapp/logs /opt/myapp
以上命令覆盖文件与数据库的常见备份路径与做法,适合大多数基于 Debian 的 Java 应用。
三 自动化与工具化方案
sudo apt-get update
sudo apt-get install -y backupninja
sudo ninja-config --name javaapp
# 在向导中选择源目录(如 /opt/myapp)、目标(本地/SSH/FTP)、调度与保留策略
sudo ninja-backup javaapp
# 首次全量 + 后续增量,GPG 加密,备份到 S3 兼容存储
duplicity --full-if-older-than 7D \
--encrypt-key YOUR_GPG_KEY_ID \
/opt/myapp s3://bucket/backup/myapp
# 列出备份集
duplicity collection-status s3://bucket/backup/myapp
# 恢复最近一次
duplicity --file-to-restore opt/myapp/conf s3://bucket/backup/myapp /tmp/restore
rsync -avz --delete -e ssh /opt/myapp/ backup@192.0.2.10:/backup/myapp/
四 恢复步骤与要点
# 全量包恢复
tar -xzvf myapp_2025-12-11.tar.gz -C /
# 或 rsync 回滚
rsync -avz --delete backup@192.0.2.10:/backup/myapp/ /opt/myapp/
mysql -u USER -p < mydb_2025-12-11.sql
pg_restore -U USER -d mydb mydb_2025-12-11.dump
# 备份
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)
五 备份策略清单与注意事项